最近在开发项目的时候,遇到键盘退出时,出现闪现的情况,即退出之后又出现,然后有退出的情况,这里总结一下iOS中键盘退出的方法。
1.取消第一响应者。
[textField resignFirstResponder];
2.如果第一响应者存在于self.view里面,就可以退出键盘。
[self.view endEditing:YES];
3.点击编辑区以外的地方,收起键盘(点击区为view)。
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if (![myTextView isExclusiveTouch]) {
[myTextView resignFirstResponder];
}
}
但是如果你的触碰事件里已经且写满了程式码,那么就可以考虑使用,UIControl 的 Touch Up Inside 事件来收起键盘,方法是将以下程式码与 UIControl 的 Touch Up Inside 事件连结即可。
- (IBAction)dismissKeyboard:(id)sender {
[myTextView resignFirstResponder];
}
如果要使用此方式请务必记得,你操作画面的 Custom Class 一定要是 UIControl 才行。画面的 Custom Class 为 UIControl。将收起键盘的方法与 UIControl 事件连结。
4. 通过点击软键盘上某个按钮。可以根据需要设置textField的键盘类型,通过textField的returnKeyType 设置需要的返回键类型。然后在 - (BOOL)textFieldShouldReturn:(UITextField *)textField代理方法中 调用上述的两种关闭键盘的方法。- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//根据不同的return键可以在这里做一些发送或处理数据的操作
//隐藏键盘
[textField resignFirstResponder];
//[self.view endEditing:YES];
}
注意,当系统显示和隐藏键盘的时候会发出相应的通知,我们可以在通知中获取键盘的相应数据和状态。
注意,有时候会出现键盘显示之后又隐藏的 情况,这个时候,肯定是某个编辑框又称为第一响应者了,处理的办法是:
[self.textField becomeFirstResponder];
[self.textField resignFirstResponder];
先将编辑框变为第一个响应者,在取消它的第一响应者。