UITextField点击textField外任意区域键盘回收(二)---- TouchesBegan
来源:互联网 发布:大数据技术相关书籍 编辑:程序博客网 时间:2024/06/11 07:43
最近做的项目用到好多textField, 涉及到键盘回收,键盘挡住textField 上移textField等,自己水平不够,深感textfield好复杂,想好好整理下自己会得用法,继续学习不会的用法。。
键盘回收有好多中方法:UITextFieldDelegate, 在self.view上添加UIControl, TouchesBegan方法,[UIAppllication shareApplication]方法
其中点击textField外任意区域回收键盘,这三种方法可以实现:self.view上添加UIControl, TouchesBegan方法,[UIAppllication shareApplication]
方法2
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
只用UITextField代理方法回收键盘方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES;}
这样的方法在textField很多时变得不好管理,得为那么多的textField指定delegate,会费很多代码。
我们来看另一种方法touchesBegan,在一个UIView类中实现该方法,将view的endEditing置为YES即可实现。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [super touchesBegan:touches withEvent:event]; [self.view endEditing:YES];}
这样,当点击UIView中非可编辑框的地方时,UIView会捕获触摸事件,调用上面的方法,这样UIView的endEditing属性变为YES,UIView及其subViews上所有的编辑框都会resignFirstResponder。
- (BOOL)endEditing:(BOOL)force
在使用该方法的时候,我遇到了一个问题,就是我的UITextField是加在UIScrollView上的,然后还有个tableView加在UIScrollView上的(tableView先加到scrollView上),scrollView才是加在UIView上的。这样以来,我点击UITextField以外的地方,没有任何反应,touchesBegan不会调用。这里的原因在于,我点击UITextField以外的区域,实际是点击了tableView,tableView捕获点击事件,可它不会传递该事件。怎么办呢?可以自己写一个类,继承UITableView,然后在自己的类中重写touchesBegan等方法。思路就是这样,下面我示例一下自己这种情况下的实现。
自己写一个继承自UITableView的类,重写以下方法。
#import "JYUITableView.h"@implementation JYUITableView-(BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view{ return YES;}-(BOOL)touchesShouldCancelInContentView:(UIView *)view{ return NO;}-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [super touchesBegan:touches withEvent:event]; [self.superview endEditing:YES];}-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ }
用这个类来创建自己的UITableView对象,而这个对象是加在scrollView上的,它的superview就是scrollView。当点击这个tableView时,它调用touchesBegan方法,在这个方法中,把它的父视图(scrollView)的endEditing设置为YES,那么scrollView上的所有UITextField都resignFirstResponder,键盘得以隐藏!
0 0
- UITextField点击textField外任意区域键盘回收(二)---- TouchesBegan
- UITextField点击textField外任意区域键盘回收(一)---- [UIAppllication shareApplication]
- textField键盘回收
- iOS textField 回收键盘
- 点击scrollview释放键盘触发touchesBegan方法
- UITextField,UITextView回收键盘
- 1.UITextField 只能输入数字和点 2.textField回收键盘
- android点击任意非EditText区域,隐藏键盘
- UITextField的键盘回收用法
- UITextfield resignFirstResponder键盘不回收
- UITextField / UIButton / 回收键盘delegate
- UITextField的键盘的回收
- UITextField *textfield常用的取消键盘方法
- 点击TextField禁止弹出键盘
- 点击空白回收键盘
- UITextField 点击非文本框区域使键盘消失的三种方法
- 点击UITextField不弹出键盘
- UITextField点击空白键盘退去
- JNA调用C语言动态链接库学习实践总结(指针模拟)
- AndroidIO编程
- bzoj 3572[HNOI2014]世界树
- PHP mysql 两个数据库的表连接查询
- 我与大话设计模式之代码篇(三)---抽象工厂模式
- UITextField点击textField外任意区域键盘回收(二)---- TouchesBegan
- LightOJ 1047 - Neighbor House(DP)
- 虚拟机linux与主机时间同步
- 二维数组运算符重载
- cron表达式详解
- HTTP服务器响应状态信息
- 在Apache Spark上跑Logistic Regression算法
- 利用第三方开源框架 SwipeMenuListView 实现用户的左右侧滑事件
- JAVA线程安全之synchronized关键字的正确用法