今天 Xcode 升級到 8.0, 手機升級到 10.0, 然后運行項目。。。
基本流程沒什么大的問題,但是當有 UITextField 的頁面彈出后,發現整個界面(包括導航,初步認為是window)向上偏移了。初步認為是代碼中有適配 UITextField 上移的代碼,查找一遍發現并沒有。繼續測試,發現當 UITextField 失去焦點后界面恢復正常布局,然后再獲取焦點,界面還是正常的,反復測試還是這樣。所以認為是只有剛進入的時候會出現這個問題。
?然后看 Storyboard 中發現 ViewController 上沒有 UIScrollView 作為 superView, 所以就加了一個UIScrollView 作為 superView,運行,發現問題還是存在,并且發現 UIScrollView 也會上移。好吧,不是 UIScrollView 的問題,代碼回退,繼續嘗試。
發現代碼中是把 UITextField 獲取焦點放在了 viewWillAppear方法中,嘗試將獲取焦點放在了viewDidAppear方法中,發現就不會出現界面上移的現象。但是如果放在 viewDidAppear 里面的話,如果快速操作頁面,返回/下一頁,鍵盤的出現就會出現錯亂問題,還得需要在viewWillDisappear方法里面寫UITextField失去焦點的代碼,這樣一來就有點兒麻煩了。
所以不知道是不是iOS 10 之后對 UITextField 的優化還是什么,希望有遇到這個問題的小伙伴歡迎提出不同見解。不喜勿噴。