iOS 结束当前界面编辑(隐藏键盘)

两种比较好的方式:

方式一: 监听通知 UITextFieldTextDidBeginEditingNotification
#pragma mark - <控制器生命周期>
- (void)viewDidLoad {
    [super viewDidLoad];
// 添加tap手势结束当前编辑(隐藏键盘⌨️)
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(endEditing)];
    [self.view addGestureRecognizer:tap];

    _textFieldObserver = [[NSNotificationCenter defaultCenter] addObserverForName:UITextFieldTextDidBeginEditingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
       if ([note isKindOfClass:[UITextField class]]) {
            _currentTextField = note.object;
       }
    }];
}

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    [[NSNotificationCenter defaultCenter] removeObserver:_textFieldObserver];
 }
#pragma mark - <结束编辑>
- (void)endEditing {
    [_currentTextField endEditing:YES];
 }
方式二: 使用UITextField的代理方法
#pragma mark - <控制器生命周期>
- (void)viewDidLoad {
    [super viewDidLoad];
// 添加tap手势结束当前编辑(隐藏键盘⌨️)
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(endEditing)];
    [self.view addGestureRecognizer:tap];
}
// 通过代理方法获取当前的 UITextField
#pragma mark - <UITextFieldDelegate>
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    
    _currentTextField = textField;
    return YES;
}
#pragma mark - <结束编辑>
- (void)endEditing {
    [_currentTextField endEditing:YES];
 }

总结:

对比两种方式, 其实只是获取当前 UITextField 的方式不同而已, 能获取到 FirstResponder 的 UITextField 就能很容易控制键盘(隐藏/出现).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.UITextField属性 0.enablesReturnKeyAutomatically 默认为No,如果设...
    奋斗ing0310阅读 5,609评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,856评论 25 709
  • 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知...
    莫离_焱阅读 11,600评论 1 8
  • 兴尽悲来之时即是最亲近自然之时,不要旅行和拍照,不要自作聪明的计划,不要霸王硬上弓式的自省和欣喜。薄暮垂云之际认清...
    沙底隆的雷诺阅读 1,761评论 0 0
  • 我总是在与时间打架,我想要逃离他无所不在的控制。 我从不在手腕上套一个傻乎乎的手表,把时间套在一个冰冷的狭小容器中...
    爱喝橙汁的然然阅读 1,865评论 0 1