接下来,我了解到要在单击屏幕上的任意位置时关闭虚拟键盘,我们必须实现touchesBegan方法以及与现有视图UITextFields绑定的变量名称。
如果我们有大约10个文本字段,我了解到我必须重复此命令10次:
[MyFristTextField resignFristResponder];
[MySecondTextField resignFristResponder];
...
[MyTenTextField resignFristResponder]; 有没有更简单的方法来做到这一点,例如,一次性调用UITextFields?
发布于 2014-02-25 06:27:27
在属性中保留对当前UITextField的引用。然后,当您希望键盘关闭时,向该UITextField发送resignFirstResponder。
发布于 2014-02-25 06:46:34
您不需要执行10次。
你能做的就是使用:
[self.view endEditing:YES];在您从tap Gesturrecgnizer调用的方法。
例如:
self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeAllKeyBourds)];
[self.view addGestureRecognizer:self.tap];您的代码应该如下所示:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeAllKeyBourds)];
[self.view addGestureRecognizer:self.tap];
}
{
[self.view endEditing:YES];
[self.view removeGestureRecognizer:self.tap];
self.tap = nil;
}提示:
如果您使用的是10 TextField,则最好将其放在滚动视图上,以便在使用较低的文本字段时可以向上提升滚动视图。
希望这能有所帮助!
编辑
您必须保留一个实例变量或TapGestureRecognizer的属性,以便在发生点击时引用它。所以你在你的@inerface中保留了一个属性,它应该是这样的:
//At your interface:
@interface LogInpageViewController : UIViewController
//Keep a property
@property (nonatomic,strong) UITapGestureRecognizer *tap;https://stackoverflow.com/questions/22000291
复制相似问题