【问题标题】:UITableViewController resizing TableView sporadicallyUITableViewController 偶尔调整 TableView 的大小
【发布时间】:2014-04-16 18:25:35
【问题描述】:

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

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

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

编辑

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




【问题讨论】:

  • 它们真的都是UITableViewController 还是只是UIViewController 中的UITableView
  • 这是一个棘手的问题,我之前在我的一个应用程序中看到过,并且相信它与 UITableView 的添加方式有关。是不是左边的那个直接作为UITableViewController添加到UINavigationController中,而右边的添加为子视图(UITableView),还是没有添加到UINavigationController中?
  • 我也遇到了这个问题,也许你在表格视图中包含了一些 Outlets,而不是在 tableviewcell 中
  • 两者都使用/实现UITextFieldDelegate?
  • 很奇怪。 解决方法tag 设置为UITextField,当代理响应时使用tag 获取indexPath,然后使用scrollToRowAtIndexPath

标签: ios iphone objective-c uitableview uitextfield


【解决方案1】:

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

- (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中调用此方法即可解决问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多