UITableViewController自動彈出鍵盤
場景:
輸入列表,n個輸入框(每一行44高度,30個cell),或編輯或彈出picker
各個cell自動適應(yīng)高度
設(shè)置預(yù)設(shè)高度:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
點(diǎn)擊當(dāng)前屏幕范圍內(nèi)某inputView,彈出鍵盤, UITableViewController自動彈起,會出現(xiàn)不在當(dāng)前視圖內(nèi)的cell加載不出來,產(chǎn)生空白(部分cell展示不出),再次滾動滾出范圍恢復(fù)加載cell;
解決方案:
取消預(yù)設(shè)高度,通過代理方法heightForRowAtIndexPath:返回每一行cell高度;
原因:
tableView自適應(yīng)高度,每個cell的位置都是不確定的,彈出鍵盤會改變cell(不在當(dāng)前屏幕的)的位置,導(dǎo)致UI錯亂;
由于本人xcode環(huán)境9.1,在我的手機(jī)(iphoneX11.3)上時100%復(fù)現(xiàn)的bug,在11.2系統(tǒng)iphone se上面復(fù)現(xiàn)率也很高;感覺和11.0之后UITableViewController的底層機(jī)制有關(guān)系,還需要更深入的研究;
ps:
我的table布局,創(chuàng)建cell加入到list里面;
中間看到同事利用字典參數(shù),循環(huán)創(chuàng)建的cell輸入列表,參考:http://www.reibang.com/p/47e96d025742;
有機(jī)會學(xué)習(xí)一下,感覺自己技術(shù)落后了;