代码详解ios键盘收起问题
2018-01-26 15:41
826 查看
在开发过程中,我们经常会用到UITextField、UITextView等文本框,然后这些文本框在点击之后会自动成为第一响应者(FirstResponder),并自动弹出软键盘。然而,没有自动定义好的软键盘的回收。今天,我在开发过程中就遇到了这个问题,首先,软键盘收起会发生在两种情况下,一是当前区域为非第一响应者,二是当前区域的输入结束。具体解决方案有两种:
1、在当前页面设置点击事件,当点击事件发生时,注销当前视图的第一响应者或者设置当前摄入结束。当点击事件发生在非选中区域时,则键盘会自动回收:
//在viewDidLoad中 添加点击手势,为了关闭键盘的操作 UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)]; tap1.cancelsTouchesInView = NO; [self.view addGestureRecognizer:tap1]; //点击空白处的手势要实现的方法,设置当前输入结束 -(void)viewTapped:(UITapGestureRecognizer*)tap1 { [self.view endEditing:YES]; }
这种方法对于视图上的任何UITextField、UITextView等文本框都有效,不需要对每一个UITextField、UITextView等文本框进行进行设置。
2、利用键盘上的 回车键 来进行设置当前UITextField、UITextView等文本框不是第一响应者,这种方法对UITextField、UITextView的应用不一样,需要区别进行。
对于UITextField,相应的UITextFieldDelegate有相关的处理
//设置回车键的类型和代理 self.themeTextField.returnKeyType = UIReturnKeyDone; self.themeTextField.delegate = self ; #pragma mark - textField delegate - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; //[self.view endEditing:YES]; return YES; }
对于UITextView,相应的UITextViewDelegate并没有相应的处理回车键的方法。但是,我们可以根据UITextViewDelegate提供的方法对键盘输入的值进行判断,如果为回车键(\n)则设置当前UITextView不是第一响应者,否则不操作。
//设置回车键的类型和代理,当前类是继承自UITextView的一个类 self.delegate = self ; self.returnKeyType = UIReturnKeyDone ;
//UITextViewDelegate代理,当键盘输入变化时调用,可以通过该方法判断输入的内容 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { //判断是否是回车键 if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; return NO; } return YES ; }
您可能感兴趣的文章:
相关文章推荐
- 【iOS 0 行代码系列】之 0 行代码解决键盘遮挡问题
- UITextField 详解-- IOS (解决键盘遮住view及密文設定的问题实例)
- 『零行代码』解决键盘遮挡问题(iOS)
- iOS开发之优秀开源框架IQKeyboardManager,零行代码解决键盘遮挡问题,如此简单解决键盘遮挡问题,IQKeyboardManager源码分解
- 『零行代码』解决键盘遮挡问题(iOS)
- 『零行代码』解决键盘遮挡问题(iOS)
- 『零行代码』解决键盘遮挡问题(iOS)
- iOS开源组件__仿写QQ/微信聊天键盘(表情,问题,输入框)纯代码,无依赖
- iOS开发键盘弹出时遮住输入框的问题
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
- IOS学习笔记36—解决键盘遮挡输入框(UITextField)问题
- UITextField 文本字段控件 -- IOS (解决键盘遮住View及密文設定的问题)(实例)
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】
- iOS开发presentModalViewController ,若有UITextField,键盘无法下去的问题
- IOS开发(21)关于UITextField的键盘遮挡问题
- [iOS代码] 获取键盘keyboard所占区域大小,调整界面布局
- Obj-c代码静态扫描 ios代码静态扫描的问题
- IOS开发 textField 键盘遮挡问题
- iOS 解决键盘挡住输入框的问题