键盘关闭

几乎所有人都会遇到的一个问题就是,在输入框,比如 UITextFieldUISearchBar等,需要使用键盘操作的过程中,都会进行一个 控制 键盘消失的 问题。正确的思路就是,使得该 UI 控件失去焦点,那么,键盘就会消失。也就是,通过 注册 第一响应者 来达到相对应的目的。一般都是————

if ([xx isFirstResponder]) {
    [xx resignFirstResponder];   
}

或者

[self.view endEditing:Yes]

那么,在实际上使用可以通过

  1. 增加一个按钮,来实现以上代码,对键盘事件进行一个点击消失。这种简单粗暴的解决方案,虽然是居家旅行必备良品,但是实在是矮穷挫一枚。UI 上也是极大不美观。

  2. 利用一个 UITapGestureRecognizer进行一个点击响应事件来判断。当然,在实现过程中,难免有些 UI 比较复杂,比如说 界面上有某个按钮 或者 UITableViewCell ,又或者 UICollectionViewCell等,如果对象有相应点击 代理方法或事件时,那么需要实现手势的一个代理方法,进行判断是不是属于某种类型。eg:

       `- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
           if ([@"UIButton" isEqualToString:NSStringFromClass([touch.view class])]) {
               return NO;
           }
           // 或者 UITableViewCell
           if ([@"UITableViewCell" isEqualToString:NSStringFromClass([touch.view class])]) {
               return NO;
           }
           // 又或者 UICollectionViewCell
           if ([@"UICollectionViewCell" isEqualToString:NSStringFromClass([touch.view class])]) {
               return NO;
           }
           return YES;
       }

    诸如以此类推。

3.利用 UIControl 的特性,直接把 底层 的 viewUIView变成 UIControl,之后添加 Touch Up Inside 连线事件,实现上述 键盘消失 的方法,那么也可以让 键盘消失。

总的来说,主要就是让 输入框 失去 焦点,那么键盘也就会判断 结束编辑状态,之后消失。


六叔
165 声望12 粉丝

男女只是传宗接代,男男女女才是真爱!