UITableViewController自动弹出键盘
场景:
输入列表,n个输入框(每一行44高度,30个cell),或编辑或弹出picker
各个cell自动适应高度
设置预设高度:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
点击当前屏幕范围内某inputView,弹出键盘, UITableViewController自动弹起,会出现不在当前视图内的cell加载不出来,产生空白(部分cell展示不出),再次滚动滚出范围恢复加载cell;
解决方案:
取消预设高度,通过代理方法heightForRowAtIndexPath:返回每一行cell高度;
原因:
tableView自适应高度,每个cell的位置都是不确定的,弹出键盘会改变cell(不在当前屏幕的)的位置,导致UI错乱;
由于本人xcode环境9.1,在我的手机(iphoneX11.3)上时100%复现的bug,在11.2系统iphone se上面复现率也很高;感觉和11.0之后UITableViewController的底层机制有关系,还需要更深入的研究;
ps:
我的table布局,创建cell加入到list里面;
中间看到同事利用字典参数,循环创建的cell输入列表,参考:https://www.jianshu.com/p/47e96d025742;
有机会学习一下,感觉自己技术落后了;
网友评论