UITableViewController和UITextField键盘

Kei*_*ith 10 objective-c ios

我有一个带有分组静态UITableView的UITableViewController.我在故事板上为我的静态表视图定义单元格.其中一个单元格中有一个文本字段.当调用此文本字段时,键盘会弹出,但是,表视图不会像通常在表视图控制器上那样自动调整大小.所以现在键盘部分覆盖文本区域,我无法向上滚动.

我的理解是,当您使用UITableViewController和tableview时,可调区域应该在调用键盘时自动缩小.它确实在我的应用程序的其他部分中工作,而不是使用此静态表视图.它不适用于静态表吗?还有其他我想念的东西吗?有没有简单的方法来解决这个问题?

谢谢

Dam*_* Aw 51

回答

它与静态细胞无关.他们应该工作.

如果您的控制器已经是UITableViewController,请检查您是否使用了该方法viewWillAppear.如果你这样做,你必须打电话[super viewWillAppear:YES]让'自动行为'工作.

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES]; // This line is needed for the 'auto slide up'
   // Do other stuff
}
Run Code Online (Sandbox Code Playgroud)

这个问题很容易出现,因为控制器的样板代码没有附带viewWillAppear方法调用,如果在控制器中定义它,则覆盖它.

额外的信息

看看这个链接.

Apple Table View编程指南

注意:UITableViewController在iOS 3.0中具有新功能.表视图控制器支持对表视图行进行内联编辑; 例如,如果行在编辑模式下嵌入了文本字段,它会将正在编辑的行滚动到显示的虚拟键盘上方....等等....

重要的一点

UITableViewController类通过重写loadView,viewWillAppear:和从UIViewController继承的其他方法来实现上述行为.在UITableViewController的子类中,您还可以覆盖这些方法以获取特殊行为.如果您确实覆盖了这些方法,请确保通常作为第一个方法调用来调用方法的超类实现,以获取默认行为.