在使用UITextFiled经常会遇到需要收回键盘的情形,下面列出了两种情况并提供了解决方法。
第一种情况:输入完后通过点击键盘上的return、done等按钮收回键盘
解决方法:实现UITextFieldDelegate中的textFieldShouldReturn方法,代码如下:
#pragma mark - UITextFieldDelegate
// 监听键盘Return事件
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
switch (textField.returnKeyType) {
// 键盘为done的Case
case UIReturnKeyDone:
[textField resignFirstResponder];
break;
default:
break;
}
return YES;
}
第二种情况:当前焦点在输入框,通过点击页面的空白处收回键盘
解决方法:重写UIResponder中的touchesBegan:withEvent方法,代码如下:
#pragma mark - 监听View点击事件
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
UITouch *touch = touches.anyObject;
// 如果点击到UITextField以外的View则收回键盘
if (![touch.view isKindOfClass:[UITextField class]]) {
[self.view endEditing:YES];
}
}