当您继承 UITableViewController
时,您通常会“免费”获得某些行为。例如,当 TableView 中的文本字段成为第一响应者时, View Controller 会自动滚动自身以确保该字段完全可见。
但是,当 TableView Controller 是 UISplitViewController
的详细 View Controller 时,此自动滚动不再考虑键盘的存在。 TableView Controller 仍将自动滚动以将文本字段保持在屏幕范围内,但它不再滚动以防止该字段被键盘覆盖。
您可以通过使用 Xcode 的“Master-Detail Application”模板创建一个新项目,并将详细 View Controller 替换为显示带有文本字段的单元格的 TableView Controller 来自行测试。
我想了解为什么在这种情况下自动滚动停止考虑键盘,如果可能的话如何纠正它而不必自己复制自动滚动功能。顺便说一句,这与覆盖 viewWillAppear
无关(就像这里关于 TableView Controller 自动滚动的其他一些问题一样)。
最佳答案
我知道已经晚了,但这可能会对遇到此问题的其他人有所帮助。当我在 UITableViewCell 中添加文本字段时,也会发生这种情况。我所做的是删除
superViewWilAppear:animated
viewWillAppear 方法中的一行。所以该方法看起来像这样
-(void)viewWillAppear:(BOOL)animated{
//[superViewWilAppear:animated];
Your rest of code
}
但是它所做的是它一起删除了自动滚动,你必须在 textField 开始编辑时管理 UITableView 的滚动。不知道这是否解决了您的问题,但它会为您省去考虑不同设备的键盘高度的麻烦,并且更好地自行管理。我也不确定这是否是正确的方法,但它对我有用。
关于ios - 当从 UISplitViewController 显示时,UITableViewController 自动滚动停止考虑键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26901754/