很多朋友一直为如何实现点击UITextField控件之外便隐藏键盘的问题烦恼,
之前自己一直用的方法是把一个透明的,与当前view大小相同的按钮放在最底层,再捕获它的消息,进行resignFirstResponder操作,之后每个界面都这么做,非常繁琐。今天学习UITouch时发现一个一劳永逸的方法,将下面的代码放入相应的UIViewController实现代码中,便可以实现UITextField/UITextView在点击控件外的情况下隐藏掉输入键盘。
复制代码
之前自己一直用的方法是把一个透明的,与当前view大小相同的按钮放在最底层,再捕获它的消息,进行resignFirstResponder操作,之后每个界面都这么做,非常繁琐。今天学习UITouch时发现一个一劳永逸的方法,将下面的代码放入相应的UIViewController实现代码中,便可以实现UITextField/UITextView在点击控件外的情况下隐藏掉输入键盘。
- - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
- UITouch *touch = [touches anyObject];
- //判断所点击view是否是UITextField或UITextView
- if (![[touch view] isKindOfClass:[UITextField class]] && ![[touch view] isKindOfClass:[UITextView class]]) {
- for (UIView* view in self.view.subviews) {
- if ([view isKindOfClass:[UITextField class]]) {
- [view resignFirstResponder];
- }
- }
- }
- }
如果还需要实现点“换行”或"Return"返回,只需要将Did End On Exit事件链接至类定义中,构建事件处理方法,便能实现点击“换行”事件的捕获。
转载自 http://www.findhunter.cn/ios/5514.html
非常好用 的确解决问题了