1.当点击可以编辑的控件时会被作为第一响应者(becomeFirstResponder)而弹出键盘,基于这个原因有了取消第一响应者(resignFirstResponder)来隐藏键盘.
2.在代码里面强制执行endEditing:(BOOL) 方法 也可以隐藏键盘。
隐藏键盘方法1:点击屏幕隐藏键盘 这里的屏幕指的是viewcontroller
假如viewcontroller 有对应的xib文件,则可以给这个viewcontroller添加方法来隐藏键盘,具体做法如下:
把上面的class 对应的UIView 改成UIControl
然后选中xib 中的视图 按住control键 像给按钮拖动方式添加方法,记得选择事件:TouchUpInside
这样就可以在对应的方法里面写隐藏的代码了:(具体代码等下讲解,再来看看没有xib文件的视图控制器)
如果视图控制器没有xib文件,则在视图控制器的TouchBegain : 方法里面写隐藏键盘的方法(有xib的完全和无xib的可以一样,只是多了中操作方式而已)
下面讲解隐藏键盘:上面的方法里面写[对应编辑控件 resignFirstResponder]就可以在点击屏幕的时候隐藏键盘。
隐藏键盘方法2:编辑控件的代理方法:
- (BOOL)textFieldShouldReturn
在里面实现:[对应编辑控件 resignFirstResponder]便可以隐藏键盘
原理都是一样的只是在不同的方法里面实现而已,像在tableview滑动的方法里面也可以写隐藏键盘的代码来实现键盘隐藏。
上面讲的都是用resignFirstResponder 的方式来隐藏键盘,这种方式都需要知道对应的编辑控件才能调用resignFirstResponder,下面讲解几个不需要知道编辑控件也能隐藏键盘的方法:
1.在视图控制器里面调用
[self.view endEditing:YES];
2.在视图控制器获取困难的时候用,在视图控制器里面也能用
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
3.和2是一样的
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];