ios学习——键盘的收起
时间:2022-04-29
本文章向大家介绍ios学习——键盘的收起,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在开发过程中,我们经常会用到UITextField、UITextView等文本框,然后这些文本框在点击之后会自动成为第一响应者(FirstResponder),并自动弹出软键盘。然而,没有自动定义好的软键盘的回收。今天,我在开发过程中就遇到了这个问题,首先,软键盘收起会发生在两种情况下,一是当前区域为非第一响应者,二是当前区域的输入结束。具体解决方案有两种:
1、在当前页面设置点击事件,当点击事件发生时,注销当前视图的第一响应者或者设置当前摄入结束。当点击事件发生在非选中区域时,则键盘会自动回收:
1 //在viewDidLoad中 添加点击手势,为了关闭键盘的操作
2 UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
3 tap1.cancelsTouchesInView = NO;
4 [self.view addGestureRecognizer:tap1];
//点击空白处的手势要实现的方法,设置当前输入结束
-(void)viewTapped:(UITapGestureRecognizer*)tap1
{
[self.view endEditing:YES];
}
这种方法对于视图上的任何UITextField、UITextView等文本框都有效,不需要对每一个UITextField、UITextView等文本框进行进行设置。
2、利用键盘上的 回车键 来进行设置当前UITextField、UITextView等文本框不是第一响应者,这种方法对UITextField、UITextView的应用不一样,需要区别进行。
对于UITextField,相应的UITextFieldDelegate有相关的处理
1 //设置回车键的类型和代理
2 self.themeTextField.returnKeyType = UIReturnKeyDone;
3 self.themeTextField.delegate = self ;
1 #pragma mark - textField delegate
2 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
3 [textField resignFirstResponder];
4 //[self.view endEditing:YES];
5 return YES;
6 }
对于UITextView,相应的UITextViewDelegate并没有相应的处理回车键的方法。但是,我们可以根据UITextViewDelegate提供的方法对键盘输入的值进行判断,如果为回车键(n)则设置当前UITextView不是第一响应者,否则不操作。
1 //设置回车键的类型和代理,当前类是继承自UITextView的一个类
2 self.delegate = self ;
3 self.returnKeyType = UIReturnKeyDone ;
//UITextViewDelegate代理,当键盘输入变化时调用,可以通过该方法判断输入的内容
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
//判断是否是回车键
if ([text isEqualToString:@"n"]) {
[textView resignFirstResponder];
return NO;
}
return YES ;
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Redis中字符串的表示
- Redis分布式锁背后的原理
- 解析Transformer模型
- 这5个常问的Redis面试题你答得出来吗?(详细剖析)
- 性能最佳实践:MongoDB索引
- Python基本数据类型-list-tuple-dict-set
- 深度学习应用的服务端部署
- MongoDB中的CURD操作
- 高可用的Redis主从复制集群,从理论到实践
- SpringBoot实战(一):使用Lombok简化你的代码
- Kubernetes Ingress入门指南和实践练习
- [译]Go语言常用文件操作汇总
- Redis常用数据类型对应的数据结构
- 详解卷积中的Winograd加速算法
- SpringMVC源码学习(一) - DispatcherSerlet和相关组件