点击除了TextField的任何位置收键盘

2016/03/21 16:57
阅读数 89

点击空白和任意控件收键盘,第一次用.

    

- (void)viewDidLoad
{
    [super viewDidLoad];
  
  [self setUpForDismissKeyboard];
}
- (void)setUpForDismissKeyboard {  
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
  UITapGestureRecognizer *singleTapGR =
  [[UITapGestureRecognizer alloc] initWithTarget:self
                                          action:@selector(tapAnywhereToDismissKeyboard:)];
  NSOperationQueue *mainQuene =[NSOperationQueue mainQueue];
  __weak typeof(self) weakSelf = self; 
  [nc addObserverForName:UIKeyboardWillShowNotification
                  object:nil
                   queue:mainQuene
              usingBlock:^(NSNotification *note){
                [weakSelf.view addGestureRecognizer:singleTapGR];
              }];
  [nc addObserverForName:UIKeyboardWillHideNotification
                  object:nil
                   queue:mainQuene
              usingBlock:^(NSNotification *note){
                [weakSelf.view removeGestureRecognizer:singleTapGR];
              }];
}
- (void)tapAnywhereToDismissKeyboard:(UIGestureRecognizer *)gestureRecognizer{
//此method会将self.view里所有的subview的first responder都resign掉
  [self.view endEditing:YES];
}
//4月5日修改
-(void)viewWillDisappear:(BOOL)animated
{
//观察者回收,不然dealloc会出错
    [super viewWillDisappear:animated];
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}

 

4月5日更新修改,实际使用过程中发现block里self此处需要__weak修饰.

需要回收观察者,不然dealloc会出错.

本文转帖,来源已注明.

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部