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

phu*_*phu 6 uitableview uikit uisplitviewcontroller ios

当你进行子类化时UITableViewController,通常会"免费"获得某些行为.例如,当表视图中的文本字段成为第一响应者时,视图控制器会自动滚动自身以确保该字段完全可见.

但是,当表视图控制器是a的详细视图控制器时UISplitViewController,此自动滚动不再考虑键盘的存在.表视图控制器仍将自动滚动以将文本字段保持在屏幕的边界内,但它不再滚动以保持字段不被键盘覆盖.

您可以使用Xcode的"Master-Detail Application"模板创建一个新项目,并用表视图控制器替换详细视图控制器来自行测试,该控制器显示包含文本字段的单元格.

我想了解为什么在这种情况下自动滚动会停止计算键盘,如果可能的话,如何纠正它而不必自己复制自动滚动功能.顺便说一下,这与覆盖无关viewWillAppear(如此处关于表视图控制器自动滚动的其他一些问题).

小智 0

我知道已经晚了,但这可能会帮助其他遇到此问题的人。当我在 UITableViewCell 中添加文本字段时,这种情况也发生在我身上。我所做的是删除

superViewWilAppear:动画

viewWillAppear 方法中的一行。所以该方法如下所示

-(void)viewWillAppear:(BOOL)animated{
    //[superViewWilAppear:animated];
     Your rest of code
} 
Run Code Online (Sandbox Code Playgroud)

但这的作用是它完全删除了自动滚动,并且当 textField 开始编辑时,您必须管理 UITableView 的滚动。不知道这是否解决了您的问题,但它将省去您考虑不同设备的键盘高度的麻烦,并且最好自行管理。我也不确定这是否是正确的方法,但它对我有用。