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

本文介绍了在触摸屏设备上关闭系统自动弹出键盘的两种方法及其触发时机,包括放弃第一响应者身份和结束父视图的编辑状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1)触屏动作发生后的系统处理过程

step1:查找hitView

系统捕获到触屏动作后,记录触点的坐标,给window发hitTest:消息,并告知出点坐标,window会给所有直接子对象发送hitTest消息,告知点坐标,子对象检测坐标是否在其中,如果不在其中,则返回nil,如果点在其中,则再继续给所有直接子视图发消息,直到某一个子视图,不再有子视图,且触点在其中,则返回这个对象,系统就找到了本次点击的对象


step2:找到hitView后,执行事件响应

查看找到的hitView是否提供了事件响应,如果有,则执行响应,没有提供响应,则将该次事件传递给父视图,看父视图是否响应,还没有响应,再继续向上传递,直到appdelegate,依然没有响应则抛弃本次事件,这个将事件层层上传,依次查找响应的过程,叫做响应者链


2)弹出键盘

当触点为文本框时,则系统会自动将该文本框设置为第一响应者

成为了第一响应者    becomeFirstResponder

- (IBAction)openKeyboard:(id)sender {

    //设置文本框为第一响应者

    //自动弹出键盘

    [self.textFieldbecomeFirstResponder];

}


3)关闭键盘

放弃第一响应者身份 resignFirstResponder



3.关闭键盘的两种方法

1)第一种:放弃第一响应者身份

[textField  resignFirstResponder]


2)第二种:让文本框的父视图结束编辑状态

[view  endEditing]

- (IBAction)closeKeyboard:(id)sender {

    //第一种方法:设置文本框放弃第一响应者身份

    //[self.textField resignFirstResponder];

    

    //第二种方法:结束父视图的编辑模式

    [self.viewendEditing:YES];

}


4.关闭键盘的两种时机

1)第一种:点击键盘右下角的return按键

为textField连线,选择 Did End On Exit事件即可

2)第二种:点击空白处

重写vc的touchesBegan方法

//时机一:点击右下角的return按键


- (IBAction)closeKeyboard2:(id)sender {

    //关闭键盘

    //[self.textField resignFirstResponder];

    [self.viewendEditing:YES];

}


//时机二:点击空白处

//重写vctouchesBegan方法

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

    [self.viewendEditing:YES];

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值