如何关闭系统弹出的键盘?
1)触屏动作发生后的系统处理过程
step1:查找hitView
系统捕获到触屏动作后,记录触点的坐标,给window发hitTest:消息,并告知出点坐标,window会给所有直接子对象发送hitTest消息,告知点坐标,子对象检测坐标是否在其中,如果不在其中,则返回nil,如果点在其中,则再继续给所有直接子视图发消息,直到某一个子视图,不再有子视图,且触点在其中,则返回这个对象,系统就找到了本次点击的对象
step2:找到hitView后,执行事件响应
查看找到的hitView是否提供了事件响应,如果有,则执行响应,没有提供响应,则将该次事件传递给父视图,看父视图是否响应,还没有响应,再继续向上传递,直到appdelegate,依然没有响应则抛弃本次事件,这个将事件层层上传,依次查找响应的过程,叫做响应者链
2)弹出键盘
当触点为文本框时,则系统会自动将该文本框设置为第一响应者
成为了第一响应者 becomeFirstResponder
- (IBAction)openKeyboard:(id)sender {
//设置文本框为第一响应者
//自动弹出键盘
[self.textField becomeFirstResponder];
}
3)关闭键盘
放弃第一响应者身份 resignFirstResponder
3.关闭键盘的两种方法
1)第一种:放弃第一响应者身份
[textField resignFirstResponder]
2)第二种:让文本框的父视图结束编辑状态
[view endEditing]
- (IBAction)closeKeyboard:(id)sender {
//第一种方法:设置文本框放弃第一响应者身份
//[self.textField resignFirstResponder];
//第二种方法:结束父视图的编辑模式
[self.view endEditing:YES];
}
4.关闭键盘的两种时机
1)第一种:点击键盘右下角的return按键
为textField连线,选择 Did End On Exit事件即可
2)第二种:点击空白处
重写vc的touchesBegan方法
//时机一:点击右下角的return按键
- (IBAction)closeKeyboard2:(id)sender {
//关闭键盘
//[self.textField resignFirstResponder];
[self.view endEditing:YES];
}
//时机二:点击空白处
//重写vc的touchesBegan方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
}
M牛C原创博客——UI之文本框输入键盘自动退出,点击空白处退出,切换下个文本框
原文地址:http://blog.csdn.net/qq_17354271/article/details/45771943