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

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

    

- (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修饰.app

须要回收观察者,否则dealloc会出错.ide

本文转帖,来源已注明.code

相关文章
相关标签/搜索