键盘关闭
几乎所有人都会遇到的一个问题就是,在输入框,比如 UITextField
、UISearchBar
等,需要使用键盘操作的过程中,都会进行一个 控制 键盘消失的 问题。正确的思路就是,使得该 UI 控件失去焦点,那么,键盘就会消失。也就是,通过 注册 第一响应者 来达到相对应的目的。一般都是————
if ([xx isFirstResponder]) {
[xx resignFirstResponder];
}
或者
[self.view endEditing:Yes]
那么,在实际上使用可以通过
增加一个按钮,来实现以上代码,对键盘事件进行一个点击消失。这种简单粗暴的解决方案,虽然是居家旅行必备良品,但是实在是矮穷挫一枚。UI 上也是极大不美观。
利用一个
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 的特性,直接把 底层 的 view
从 UIView
变成 UIControl
,之后添加 Touch Up Inside
连线事件,实现上述 键盘消失 的方法,那么也可以让 键盘消失。
总的来说,主要就是让 输入框 失去 焦点,那么键盘也就会判断 结束编辑状态,之后消失。