美文网首页
iOS学习之点击屏幕任何地方隐藏键盘实现

iOS学习之点击屏幕任何地方隐藏键盘实现

作者: 鑫飞 | 来源:发表于2019-04-15 10:06 被阅读0次

在iOS开发中,对UITextField进行编辑的时候键盘会自己弹出来。在编辑完成的时候,需要将键盘隐藏掉。隐藏键盘有很多种实现方法,最常见的是把TextField的firstResponder resign掉。即[textField resignFirstResponder]。本文介绍的是如何在键盘显示的时候,点击屏幕除了键盘以外的任何地方,将键盘隐藏。

基本思想如下:

  1. 在ViewController载入的时候,将键盘显示和消失的Notification添加到self.view里。
  2. 分别在键盘显示和消失时添加和删除TapGestureRecognizer

示例代码如下:

UIViewController的源代码里:

- (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];
  [nc addObserverForName:UIKeyboardWillShowNotification
                  object:nil
                   queue:mainQuene
              usingBlock:^(NSNotification *note){
                [self.view addGestureRecognizer:singleTapGR];
              }];
  [nc addObserverForName:UIKeyboardWillHideNotification
                  object:nil
                   queue:mainQuene
              usingBlock:^(NSNotification *note){
                [self.view removeGestureRecognizer:singleTapGR];
              }];
}

- (void)tapAnywhereToDismissKeyboard:(UIGestureRecognizer *)gestureRecognizer {
//此method会将self.view里所有的subview的first responder都resign掉
  [self.view endEditing:YES];
}

感谢:
https://blog.csdn.net/lianbaixue/article/details/11108593

相关文章

网友评论

      本文标题:iOS学习之点击屏幕任何地方隐藏键盘实现

      本文链接:https://www.haomeiwen.com/subject/shtmcqtx.html