首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化touchesBegan UITextField

优化touchesBegan UITextField
EN

Stack Overflow用户
提问于 2014-02-25 06:17:04
回答 2查看 95关注 0票数 0

接下来,我了解到要在单击屏幕上的任意位置时关闭虚拟键盘,我们必须实现touchesBegan方法以及与现有视图UITextFields绑定的变量名称。

如果我们有大约10个文本字段,我了解到我必须重复此命令10次:

代码语言:javascript
复制
[MyFristTextField resignFristResponder]; 
[MySecondTextField resignFristResponder]; 
... 
[MyTenTextField resignFristResponder]; 

有没有更简单的方法来做到这一点,例如,一次性调用UITextFields?

EN

回答 2

Stack Overflow用户

发布于 2014-02-25 06:27:27

在属性中保留对当前UITextField的引用。然后,当您希望键盘关闭时,向该UITextField发送resignFirstResponder

票数 0
EN

Stack Overflow用户

发布于 2014-02-25 06:46:34

您不需要执行10次。

你能做的就是使用:

代码语言:javascript
复制
  [self.view endEditing:YES];

在您从tap Gesturrecgnizer调用的方法。

例如:

代码语言:javascript
复制
    self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self    action:@selector(closeAllKeyBourds)];
    [self.view addGestureRecognizer:self.tap];

您的代码应该如下所示:

代码语言:javascript
复制
  -(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中保留了一个属性,它应该是这样的:

代码语言:javascript
复制
  //At your interface:
  @interface LogInpageViewController : UIViewController
  //Keep a property 
  @property (nonatomic,strong) UITapGestureRecognizer *tap;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22000291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档