iOS开发点滴 - 关闭键盘

时间:2022-06-10 16:32:18

有时候系统显示的键盘会挡住视图中某些重要的控件,这个时候当用户按下换行键,就应该取消UITextField对象的第一响应(First Responder)状态而关闭键盘。

1. 首先,视图控制器必须遵守UITextFieldDelegate协议

@interface XXViewController ()<UITextFieldDelegate>

2. 然后,需要再视图控制器中实现textFieldShouldReturn:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}

3. 运行应用,点击键盘,按下Return键后发觉没有反应,这是怎么回事呢?

原来,我们忘记了让我们的文本框控件连接File's Owner

点击文本框,按下Control键+鼠标拖动到左侧Placeholders中的File's Owner,这时候鼠标右键点击文本框,会发现Delegate中多了File's Owner

再次运行,Ok成功了!

4. 为了获得更好的用户体验,需要用户轻按视图背景区域,也能关闭键盘

解决方案是想顶层视图发送endEditing:消息

a. 将视图控制器中的视图的Custom Class从UIView改为UIControl

b. 添加背景轻触响应事件

b-1) 切换到辅助视图(Assistant View), 左侧是视图控制器的图形化界面,右侧是实现代码

b-2) 选中视图控制区的顶层View, Control+鼠标左键拖动到实现代码

b-3) 在弹出对话框中输入动作名称backgroundTapped

千万不要忘记把事件类型改为Touch Up Inside!!

         输入以下代码:

- (IBAction)backgroundTapped:(id)sender
{
[self.view endEditing:YES];
}

运行应用,Ok一些成功!!