iOS点击任何空白地方退出键盘

作者: 船长_ | 来源:发表于2016-03-07 22:37 被阅读816次

应用场景:登录界面或者填写信息的时候点击空白退出键盘

  • 一般解决方案:
    1.监听scrollView实时滚动代理方法调用[self.view endEditing:YES]或者[self.textField resignFirstResponse];
    2.touchBegin方法里,调用[self.view endEditing:YES]或者[self.textField resignFirstResponse];

这里介绍另外一种解决方案

  • 1.给viewController写一个分类
  • 2.利用键盘弹出和退出发出通知调用相应的方法
  • 3.给当前控制器添加点击手势
@interface UIViewController (DismissKeyboard)
-(void)setupForDismissKeyboard;
@end
@implementation UIViewController (DismissKeyboard)
- (void)setupForDismissKeyboard {
    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    UITapGestureRecognizer *singleTapGR =
    [[UITapGestureRecognizer alloc] initWithTarget:self
                                            action:@selector(tapAnywhereToDismissKeyboard:)];
    
    __weak UIViewController *weakSelf = self;
    NSOperationQueue *mainQuene =[NSOperationQueue mainQueue];
    [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];
}

用法

  • 1.导入头文件
#import "UIViewController+DismissKeyboard.h"
  • 2.在viewDidLoad方法中主动调用
- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupForDismissKeyboard];
}

相关文章

网友评论

  • 可儿家族:这篇太长不看
    可儿家族:@船长_ 看人东西怎么也得留下些证据。
    船长_:@可儿家族 受宠若惊:stuck_out_tongue_winking_eye:
  • 徽Se头像:一句代理的事,用得着这么麻烦?
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
    [_YourTextField resignFirstResponder];
    }
  • 简教练:使用这种方式会更方便,思路不错,点个赞:+1:
  • 再见远洋:这种方式是不是更加郝性能 毕竟还需要通知
  • 闭家锁:很好的思路!

本文标题:iOS点击任何空白地方退出键盘

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