IOS 7中一个非常重要的是问题!
2013-12-18 18:59
267 查看
在 iOS 7 中苹果做了许多改变,其中值得注意的一个问题就是键盘。
有许多在 iOS 6 中运行正常的 app,在iOS 7
中却出现了键盘无法消失的问题。
例如 iPad 键盘中有一个“释放键盘”按钮,点击它能够使键盘收起。这在大多数iOS 6
app 中是有效的,但在iOS 7
下运行这些程序时,你会发现点击“释放键盘”按钮键盘不会消失,甚至当用户通过导航按钮切换到其他窗口,这个键盘也不会消失!
更为严重的是,在这种情况下,所有输入控件都无法获得焦点,你不能进行任何输入!
这种情况多半是由于代码中没有正确的 resignFirstResponder 所导致的。
在iOS 6 中,输入控件有没有 resignFirstResponder 并不重要,当会话结束,键盘会自动消失。
但在iOS 7 中,isFirstResponder 的控件似乎是一直存在的,如果你不小心(或者恶意的)在控件里面构成了一个 becomeFirstResponder 的循环,则别的控件就别想获得焦点。哪怕这个控件的
superView 被释放,这个 firstResponder 也会顽固地存在,一直到你关闭应用程序。也就说视图被销毁,firstResponder 仍然不会被销毁。当你在次打开同一视图,这个控件重建,但已经是另一个实例了,原来的那个实例(firstResponder)仍然存在,并且它会一直占有 firstResponder,导致任何输入组件都无法输入。
我们可以制作这样一种恶意的 textField,当它 endEditing 的时候,让它再次 becomeFirstResponder,于是它会一直占有 firstResponder ,其它控件永远别想获得焦点……
有许多在 iOS 6 中运行正常的 app,在iOS 7
中却出现了键盘无法消失的问题。
例如 iPad 键盘中有一个“释放键盘”按钮,点击它能够使键盘收起。这在大多数iOS 6
app 中是有效的,但在iOS 7
下运行这些程序时,你会发现点击“释放键盘”按钮键盘不会消失,甚至当用户通过导航按钮切换到其他窗口,这个键盘也不会消失!
更为严重的是,在这种情况下,所有输入控件都无法获得焦点,你不能进行任何输入!
这种情况多半是由于代码中没有正确的 resignFirstResponder 所导致的。
在iOS 6 中,输入控件有没有 resignFirstResponder 并不重要,当会话结束,键盘会自动消失。
但在iOS 7 中,isFirstResponder 的控件似乎是一直存在的,如果你不小心(或者恶意的)在控件里面构成了一个 becomeFirstResponder 的循环,则别的控件就别想获得焦点。哪怕这个控件的
superView 被释放,这个 firstResponder 也会顽固地存在,一直到你关闭应用程序。也就说视图被销毁,firstResponder 仍然不会被销毁。当你在次打开同一视图,这个控件重建,但已经是另一个实例了,原来的那个实例(firstResponder)仍然存在,并且它会一直占有 firstResponder,导致任何输入组件都无法输入。
我们可以制作这样一种恶意的 textField,当它 endEditing 的时候,让它再次 becomeFirstResponder,于是它会一直占有 firstResponder ,其它控件永远别想获得焦点……
相关文章推荐
- 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)
- 看朋友日志发现的一个ios下block相关的内存管理问题,非常奇怪,请大家帮忙一起来回答!
- 一个非常重要的测试问题
- iOS问题频出,创始人离开应是其中一个重要原因
- 今天在Mac机器上使用了Flex Builder编辑了一个源代码文件,保存后使用vim命令去打开时发现系统自动在每一行的结尾添加了^M符号,其实^M在Linux/Unix中是非常常见的,也就是我们在Win中见过的/r回车符号。由于编辑软件的编码问题,某些IDE的编辑器在编辑完文件之后会自动加上这个^M符号。看起来对我们的源代码没有任何影响,其实并不然,当我们把源代码文件Check In到svn之类
- centos7 samba配置中一个非常重要的鬼地方
- iOS设置一个圆角button遇到的问题
- Spring @Async配置4. 基于@Async无返回值调用 使用的方式非常简单,一个标注即可解决所有的问题: 1 @Async //标注使用 2 public void asyncMe
- java例程练习(关于内部类的一个非常重要的作用)
- iOS 10 的一个重要更新-线程竞态检测工具 Thread Sanitizer
- 勤奋抵不过工作天天练(找一个合适的工作非常重要)
- 指针初始化是非常重要的,当我们在声明一个指针的时候请记得给它赋初值NULL,free释放完指针内容的时候也给他赋null初值。谢谢
- iOS 11中APP中tableView内容下移20pt或下移64pt的问题适配的一个总结
- ios,关于“按住说话”这个按钮的一个奇葩问题
- iOS一个简单的设置圆角不引起性能问题的分类
- 小小问题集锦6之---查询条件非常复杂时解决效率不高的一个办法
- 一个非常好的01背包问题的详解,非常清晰
- iOS ASIHTTPRequest上传图片的一个问题
- 实战解决问题开发出功能固然重要--->基本功锤炼和技术的实现原理,也非常重要
- java语言中解决一些安全问题的技巧(安全编程非常重要标签)