iOS开发点滴 - 关闭键盘
有时候系统显示的键盘会挡住视图中某些重要的控件,这个时候当用户按下换行键,就应该取消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一些成功!!
技术改变世界