UITableViewController 作为小视图中的子视图控制器 - 键盘问题

Posted

技术标签:

【中文标题】UITableViewController 作为小视图中的子视图控制器 - 键盘问题【英文标题】:UITableViewController as a childview controller in a smaller view - keyboard woes 【发布时间】:2018-07-09 16:13:31 【问题描述】:

这是一个非常规的设置,我对此表示赞赏,但我在另一个 UITableView 的 UITableViewCell 中添加了一个 UITableViewController 作为子视图控制器。哇,是的。这是一个复杂的视图,它在多个地方被重用,代码很干净,它可以工作 98%,所以我很高兴。

问题是当我的 Franken-TableViewController 中的一个文本字段成为第一响应者时。因为控制器不知道它在哪里,或者它在 tableview 单元格中,所以 tableview 滚动到错误的偏移量。我显然想要 UITableViewController 提供的自动滚动行为,但我意识到我必须帮助它找出滚动到的位置。

我不确定 UITableViewController 正在查看哪些参数来确定滚动到的位置。本文正在讨论一个非常相似的问题,以及内容仅评估单个子视图深度的事实。 Extra Space When Embedding Table Views

建议我如何在不使用 UITableViewController 重构的情况下解决这个问题?

【问题讨论】:

我知道您想使用UITableViewController,但您从中得到了什么,您不能只使用UIViewController ***.com/questions/33766993/… 我建议在文本字段成为第一响应者时尝试为tableview.contenInset 设置不同的值(例如在textFieldShouldBeginEditing: 中) 【参考方案1】:

答案是不使用 UITableViewController。 是的,UITableViewController 将免费为您提供避免使用文本字段的键盘,但众所周知,没有免费的午餐。

您可以通过多种方式阻止动画的发生并重新计算自己,但实际上,归根结底,这只是一种狡猾的技巧。

我最终将我的 UITableViewControllers 重构为 UIViewControllers,并将 IBOutlets 重构为 tableViews。您只需要自己添加一些键盘避免代码,您的应用中可能已经有这些代码。

【讨论】:

以上是关于UITableViewController 作为小视图中的子视图控制器 - 键盘问题的主要内容,如果未能解决你的问题,请参考以下文章

将 xib 文件作为 UITableViewController 中的标头添加到 UITableView

UITableViewController 作为小视图中的子视图控制器 - 键盘问题

如果弹出框作为模型呈现,UITableViewController 将失去滚动功能

如何将 segmentedControl 和 UISearchController 作为 UITableViewController 标头? (以编程方式)

在 uiviewcontroller 中添加 uitableviewcontroller 作为子视图时出错

UITableViewController 子视图:告诉 pushViewController 拥有 UIViewController