iOS开发之Bug--UITextField使用时文字向下偏移问题

这个问题,在之前项目中偶然遇到过,但是bug不明显,也不知道具体是哪种重现方式重现的,所以一直暂时略过了,但是随着项目的系统的规模变大,代码量越多,

这个问题出现的越来越明显了。

于是就只能靠百度和google了,然后体会到百度是没有成功的结果的,但是google却有成功的结果:http://blog.csdn.net/qq_29892943/article/details/50515150

下面就拷贝复制作者的笔记:

最近在使用UITextField这个控件的时候,突然发现了一个问题,就是本来用起来没问题的,但是突然在输入文字之后切换到后台,然后再切换到前台,这时候在继续输入文字,会发现UITextField里面的文字往下偏移了,而且还会出现闪现等问题。于是,各种测试找答案,终于揪出了这个问题的关键点。
首先,我的这个问题出现在UINavigationController身上,ios7.0之后,当在UINavigationController的管理下push到一个新界面的时候,默认的新界面的frame自动下拉了64(也就是导航栏和状态栏的高度),底部不会变,依然会在屏幕的最下方。其实这一切都是automaticallyAdjustsScrollViewInsets在作怪。self.automaticallyAdjustsScrollViewInsets 这个属性是IOS7才有的新方法,目的就是为了让scrollView自动适应屏幕。这个属性默认时yes,也就是自动在UINavigationController的push下,自动让下一个界面的屏幕的frame下拉了64。要不然,如果下一个界面时tableview,那么导航栏早就把tableview里面的第一行数据给盖着了。所以,UITextField出现这样的问题,也是automaticallyAdjustsScrollViewInsets在中间搞的鬼,所以只要我们加入self.automaticallyAdjustsScrollViewInsets=NO;就可以解决了。而且当我们一个界面有多个tableView之类的,将它设置为NO,完全由自己手动来布局,也不会造成错乱。

 

posted @   何杨  阅读(2094)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2015-10-20 JSP基础--JAVA遇见HTML
2015-10-20 查找算法--折半查找
2015-10-20 排序算法--冒泡排序
点击右上角即可分享
微信分享提示