如何在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) }