這個問題,在以前項目中偶然遇到過,可是bug不明顯,也不知道具體是哪一種重現方式重現的,因此一直暫時略過了,可是隨着項目的系統的規模變大,代碼量越多,ios
這個問題出現的愈來愈明顯了。佈局
因而就只能靠百度和google了,而後體會到百度是沒有成功的結果的,可是google卻有成功的結果:http://blog.csdn.net/qq_29892943/article/details/50515150測試
下面就拷貝複製做者的筆記:google
最近在使用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,徹底由本身手動來佈局,也不會形成錯亂。.net