当从UISplitViewController显示时,UITableViewController的自动滚动停止考虑键盘。

6
当你继承UITableViewController时,通常会自动获得某些行为。例如,当表视图中的文本字段成为第一个响应者时,视图控制器会自动滚动以确保该字段完全可见。
然而,当表视图控制器是UISplitViewController的详细视图控制器时,这种自动滚动不再考虑键盘的存在。表视图控制器仍然会自动滚动以使文本字段保持在屏幕范围内,但它不再滚动以避免字段被键盘覆盖。
您可以通过使用Xcode的“Master-Detail Application”模板创建新项目,并将详细视图控制器替换为显示带有文本字段的单元格的表视图控制器来测试此功能。
我想了解为什么在这种情况下自动滚动停止考虑键盘,并且如果可能的话,如何在不必自己复制自动滚动功能的情况下纠正它。顺便说一句,这与覆盖viewWillAppear(就像其他问题中关于表视图控制器自动滚动的问题)无关。

所以,如果它是一个主要的 UITableViewController,则 UITableView 会响应 UITextField 开始编辑委托调用,但如果您的 UITableViewController 不是根控制器,则可能已经硬编码了连线。我不知道这一点,但这并不让我感到惊讶。这就是为什么我从一开始就不喜欢使用 UITableViewController,我认为这意味着您需要自己编写 UITextField 连线。 - JackyJohnson
1个回答

0

我知道现在有点晚了,但这可能会帮助其他遇到此问题的人。当我在UITableViewCell中添加textfield时,我也遇到了这个问题。我所做的是在viewWillAppear方法中删除

superViewWilAppear:animated

这一行代码。所以该方法看起来像这样:

-(void)viewWillAppear:(BOOL)animated{
    //[superViewWilAppear:animated];
     Your rest of code
} 

但是这样做的效果是完全删除了自动滚动功能,当textField开始编辑时,您需要自己管理UITableView的滚动。我不知道这是否解决了您的问题,但它可以避免考虑不同设备的键盘高度,并且最好自己进行管理。此外,我不确定这是否是正确的方法,但对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接