2014-04-16 33 views
0

我在我的应用程序中有几个UITableViewControllers。我在UITableViewCells中有一些UITextFields。有时tableView会在键盘出现时自行调整大小,但并非总是如此。UITableViewController偶尔调整TableView的大小

我附上了一些例子。两者都有UITextField,这是当前的firstResponder。我拖动了两个屏幕截图以显示滚动指示器。

左侧的UITableViewController在键盘出现时调整了它的tableView,但右侧的UITableViewController没有。我究竟做错了什么?

编辑

感谢大家的帮助我在这个问题上。仍然没有解决。他们都有UINavigationController作为他们的parentViewController。右边的是UINavigationControllerstopViewController,左边的是topViewController。任何帮助,将不胜感激。




enter image description here enter image description here

+0

他们真的都是'UITableViewController'还是只是一个'UITableView'里面的'UIViewController'? – CrimsonChris

+0

这是一个棘手的问题,我之前在我的一个应用程序中看到过,并且认为它与添加UITableView的方式有关。可能是左边的那个在UINavigationController中被直接添加为'UITableViewController',但是在右边添加为子视图('UITableView')或者不在UINavigationController中? –

+0

我也得到了这个问题,也许你已经在表格视图中包含了一些Outlets而不是在tableviewcell中 –

回答

2

所以,我想出了一个解决办法:

- (void)setContentInsetWithTextField:(UITextField *)textField 
{ 
    CGFloat keyboardHeight = 216; 

    CGFloat movement = (textField.isFirstResponder ? keyboardHeight : -keyboardHeight); 

    UIEdgeInsets contentInset = self.tableView.contentInset; 
    contentInset.bottom = contentInset.bottom + movement; 
    self.tableView.contentInset = contentInset; 
} 

调用此方法在textFieldDidBeginEditingtextFieldDidEndEditing,它解决了问题!

+0

它不适合我... –

相关问题