今天 Xcode 升級(jí)到 8.0, 手機(jī)升級(jí)到 10.0, 然后運(yùn)行項(xiàng)目揍异。全陨。。
基本流程沒什么大的問題衷掷,但是當(dāng)有 UITextField 的頁面彈出后辱姨,發(fā)現(xiàn)整個(gè)界面(包括導(dǎo)航,初步認(rèn)為是window)向上偏移了戚嗅。初步認(rèn)為是代碼中有適配 UITextField 上移的代碼雨涛,查找一遍發(fā)現(xiàn)并沒有。繼續(xù)測(cè)試懦胞,發(fā)現(xiàn)當(dāng) UITextField 失去焦點(diǎn)后界面恢復(fù)正常布局替久,然后再獲取焦點(diǎn),界面還是正常的躏尉,反復(fù)測(cè)試還是這樣蚯根。所以認(rèn)為是只有剛進(jìn)入的時(shí)候會(huì)出現(xiàn)這個(gè)問題。
?然后看 Storyboard 中發(fā)現(xiàn) ViewController 上沒有 UIScrollView 作為 superView, 所以就加了一個(gè)UIScrollView 作為 superView醇份,運(yùn)行稼锅,發(fā)現(xiàn)問題還是存在吼具,并且發(fā)現(xiàn) UIScrollView 也會(huì)上移僚纷。好吧,不是 UIScrollView 的問題拗盒,代碼回退怖竭,繼續(xù)嘗試。
發(fā)現(xiàn)代碼中是把 UITextField 獲取焦點(diǎn)放在了 viewWillAppear方法中陡蝇,嘗試將獲取焦點(diǎn)放在了viewDidAppear方法中痊臭,發(fā)現(xiàn)就不會(huì)出現(xiàn)界面上移的現(xiàn)象。但是如果放在 viewDidAppear 里面的話登夫,如果快速操作頁面广匙,返回/下一頁,鍵盤的出現(xiàn)就會(huì)出現(xiàn)錯(cuò)亂問題,還得需要在viewWillDisappear方法里面寫UITextField失去焦點(diǎn)的代碼恼策,這樣一來就有點(diǎn)兒麻煩了鸦致。
所以不知道是不是iOS 10 之后對(duì) UITextField 的優(yōu)化還是什么,希望有遇到這個(gè)問題的小伙伴歡迎提出不同見解。不喜勿噴分唾。