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