点击某个TextField无法收回所有TextField的键盘,比较特殊(点击的是文本框,而不是done)--iOS 开发

如题:点击某个TextField无法收回所有TextField的键盘,比较特殊(点击的是文本框,而不是done)。

网上搜的答案,都不是这种情况,虽然很多无法回收键盘的案例,但是没人写这个案例,所以我自己也当作笔记收藏吧,也希望可以帮助其他人。


一般来说,我们是点击done、return、换行、或者UI上的一些按钮(保存,提交,发布、下一步等等业务逻辑所需按钮)时收回所有框的键盘。

但是在这里是点击某个textField时需要收回全部键盘;

应用场景:比如说,在一个TextField右侧放个开关按钮,直接放在textField的rightView就可以了,而不需要另外创建视图,从而多了计算x、y坐标的计算;而且还可以在leftView加入其它东西(例如:标题、图标等等)。

通过TextField的左右视图可以很快的将控件加载在两端。快速定位控件位置的方法,而不需要我门另外计算位置来创建视图。



一直很郁闷,在点击的时候收回键盘不是在textField 的代理方法xxx里面执行收回键盘就可以了么?

经过一番周折之后,发现了原来时在代理方法xxxx里面执行回收键盘事件才对。


好了,点击一个TF可以收回其它的键盘了,

那么问题又来了,虽然点击当前的TF可以回收其他TF弹出来的键盘;但是当我再次点击当前键盘的时候,键盘又出现了,我们的需求是点击当前的TF的时候不准弹出键盘,所以才有收回键盘这个需求的。


。。。这次虽然遇到坑了,但是没那么长时间,尝试了一会,也就十几二十分钟,就找出来了。原来还要在textFieldDidBginEditing里面也要收回键盘;


因为当前TF第一次收回键盘是因为第一次会执行-(void)textFieldDidBeginEditing:(UITextField *)textField,将要开始编辑;因为本来没开始编辑的,现在点击它,当然有将要开始进入编辑的这个状态啦-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField

第一次收回之后,不点其他TF,再次点击的还是当前的TF,这时就不会执行-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField。。。了;因为本来就是编辑状态了,早就开始了,就不存在说将要开始了,因为已经不是开始了嘛,这是在编辑中了,想想也对哦,-(void)textFieldDidBeginEditing:(UITextField *)textField就是在编辑中嘛,编辑中也要回收键盘。


这样一搞,开始编辑-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField和编辑中-(void)textFieldDidBeginEditing:(UITextField *)textField也收回键盘,那么就无论怎么点都会把键盘收回去啦。

问题解决了,在搞一会睡觉了。


代码在这里,就这样搞了半天,此时不知道说什么好,所以允许我乱说点什么

发布了50 篇原创文章 · 获赞 12 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/u010289343/article/details/52647322