码迷,mamicode.com
首页 > 其他好文 > 详细

M牛C原创博客——UI之文本框输入键盘自动退出,点击空白处退出,切换下个文本框

时间:2015-05-16 23:24:07      阅读:1137      评论:0      收藏:0      [点我收藏+]

标签:ios   ios开发   自动退出键盘   切换文本框   

如何关闭系统弹出的键盘?

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];

}


//时机二:点击空白处

//重写vctouchesBegan方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    [self.view endEditing:YES];

}



M牛C原创博客——UI之文本框输入键盘自动退出,点击空白处退出,切换下个文本框

标签:ios   ios开发   自动退出键盘   切换文本框   

原文地址:http://blog.csdn.net/qq_17354271/article/details/45771943

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!