我学会了如何在单击返回键或用户触摸文本字段之外时关闭键盘。
一种方法是委托(delegate)一个类来管理文本字段并编写代码:
- (BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES; //I'm not sure whether I choose YES or NO
}
另一种方式如下:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if (touchToDismissKeyboard.phase == UITouchPhaseBegan) {
[self.firstTextField resignFirstResponder];
}
}
但是,通过上述任何一种方法,我发现其他接口(interface)已“启用”,例如与文本字段在同一 View 上的分段控件或开关。此外,当这些启用的界面被点击时,键盘仍然在屏幕上。
然后,我的问题是如何在键盘出现时使其他界面不可用(“启用 = NO”),以及如何在不更改其他界面的值的情况下通过触摸键盘或文本字段之外的任何位置来关闭键盘。
最佳答案
使用 Tap 手势识别器
UITapGestureRecognizer *tapRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dissmissKeyBoard)];
tapRecognize.delegate = self;
tapRecognize.numberOfTapsRequired = 1;
[self.viewB addGestureRecognizer:tapRecognize];
然后dissmissKeyBoard方法实现。
- (void)dissmissKeyBoard
{
[yourTextField resignFirstResponder];
}
希望这会帮助你。
关于ios - 出现键盘时如何使键盘以外的其他界面不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532544/