如何在iphone上触摸空白区域时隐藏键盘

71 iphone iphone-softkeyboard

通常当您触摸文本输入区域时,键盘会弹出,当您触摸屏幕的空白区域时,键盘会消失.如何实现这一目标?

就像我们在iphone safari上体验到的一样......

谢谢

Hit*_*can 115

更新方式(推荐):

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
   [self.view endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)

这将结束所有子视图的编辑并重新签署第一个响应者.

其他方式(枚举所有文本视图):

这是一步一步的:

将IBAction添加到视图控制器,例如 - (IBAction)backgroundTouch:(id)sender

在backgroundTouch操作中,您需要将resignFirstResponder消息发送到视图中的所有文本框.这是不幸的,但是必要的,因为目前无法检索当前具有FirstResponder状态的对象.它应该看起来像这样:

- (IBAction)backgroundTouch:(id)sender {
  [someTextBox resignFirstResponder];
  [anotherTextBox resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

向视图添加一个按钮控件,将其大小覆盖整个可见区域(状态栏或任何选项卡或导航控制器除外).选择按钮,然后转到布局菜单并选择发送至返回.同时将按钮的类型设置为自定义,如果您没有专门为其提供任何绘图代码,则该类型是不可见的.

将Button的Touch Up Inside事件连接到backgroundTouch:动作并尝试一下.

  • 在另一篇文章中发现捷径:[self.view endEditing:YES]; 将结束所有子视图中的编辑并辞退第一响应者.它比枚举所有文本框更清晰,并且在以后添加字段时不会中断! (51认同)

Sha*_*lam 73

使用此简单解决方案

对于Swift 4:

   override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
   }
Run Code Online (Sandbox Code Playgroud)

对于Swift 2:

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)
    }
Run Code Online (Sandbox Code Playgroud)

对于目标C:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
   [self.view endEditing:YES];
}  
Run Code Online (Sandbox Code Playgroud)

适用于UITextField,UITextView和所有子视图.

  • 真的是grt解决方案. (2认同)

小智 16

忘记在后台放一个按钮有简单的解决方案

(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.textfieldName resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*die 2

发送resignFirstResponder至控制器。