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

通常当您触摸文本input区域时,popup键盘,当您触摸屏幕的空白区域时,键盘消失。 如何做到这一点?

就像我们在iphone safari上经历的一样

谢谢

更新方式(推荐):

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

这将结束在所有子视图上的编辑并退出第一响应者。

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

这是一步一步的:

添加一个IBAction到你的视图控制器,比如 – (IBAction)backgroundTouch:(id)发送者

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

 - (IBAction)backgroundTouch:(id)sender { [someTextBox resignFirstResponder]; [anotherTextBox resignFirstResponder]; } 

将一个button控件添加到视图中,调整它的大小以覆盖整个可见区域(状态栏或任何选项卡或导航控制器除外)。 selectbutton,然后转到布局菜单,然后select发回。 还要将button的types设置为自定义,如果您没有专门为其提供任何绘图代码,则该button是不可见的。

将Button的Touch Up Inside事件连接到backgroundTouch:action并尝试一下。

用这个简单的解决scheme

对于Swift 2:

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

对于Objective C:

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

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

忘记在背景中放置一个button有简单的解决scheme

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

有关于这个问题的教程(也涉及没有DONE键的数字键盘)在这里

对于> iOS 4.0有另一种解决scheme(也许更好)有了这个代码,单击任何地方在视图隐藏键盘。

 // single tap to resign keyboard UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithBlock:^(UIGestureRecognizer *rec){ [input_text resignFirstResponder]; }]; self.singleTapRecognizer.numberOfTapsRequired = 1; self.singleTapRecognizer.cancelsTouchesInView = NO; [self.view addGestureRecognizer:singleTapRecognizer]; 

发送resignFirstResponder到控件。

以下代码在xamarin iOS项目中可以正常工作:

 public override void TouchesBegan (NSSet touches, UIEvent evt){ View.EndEditing (true); } 

你也可以这样做

通过触摸背景来隐藏键盘

 - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[self view] endEditing:YES]; } 

我也有这个问题,这是非常烦人的。 但我想出了如何摆脱键盘意外。 假设你正在给John发短信,而且在你看到你的谈话的时候有一个键盘,从而减less你可以看到的屏幕。 那么点击左边的消息,然后select一个不同的人,你有一个发短信的logging,然后在左上angular再次点击消息。 然后回去selectJohn。 不,你回到和约翰的谈话中,键盘没有了。 接缝很多,但很快。 你会认为他们只是把隐藏button放在键盘上哈哈希望有所帮助,或者是足够清楚。

我无法使用'initWithBlock:'select器编译Val的答案。

这段代码适用于我。 将此添加到定义视图的方法中 – 请注意,我的视图是组合的,我想对单击的响应的子视图是“chatView”。 使用键盘的input字段视图名为“chatInput”。

  // single tap to resign (hide) the keyboard UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; singleTapRecognizer.numberOfTouchesRequired = 1; singleTapRecognizer.cancelsTouchesInView = NO; [chatContent addGestureRecognizer:singleTapRecognizer]; 

然后添加分接处理方法。

 /** * Handles a recognized single tap gesture. */ - (void) handleTapFrom: (UITapGestureRecognizer *) recognizer { // hide the keyboard NSLog(@"hiding the keyboard"); [chatInput resignFirstResponder]; } 

如果你正在使用swift和iOS 8/9,这个解决scheme应该可以正常工作:

  override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { self.view.endEditing(true) }