UITextField 成为第一响应者后,UITableView 不会调整大小

Posted

技术标签:

【中文标题】UITextField 成为第一响应者后,UITableView 不会调整大小【英文标题】:UITableView will not resize after UITextField becomes first responder 【发布时间】:2012-07-04 21:19:10 【问题描述】:

我的情节提要中有两个几乎相同的场景。两者都是 UITableViewControllers。两者都有页眉和页脚视图。页眉视图有一个 UISearchBar,页脚视图有一个包含 UITextField 的 UIView。每个只有一个原型单元。一个原型为“基本”单元,另一个原型为“正确细节”单元。

这就是问题所在。当我在第一个场景的页脚视图中单击 UITextField 时,表格会自动调整大小,以便表格底部位于键盘顶部。这允许我向上滚动表格,以便显示页脚视图并且用户能够看到他们正在输入的内容。另一个场景不会自动调整 UITableView 的大小,因此 UITableView 无法将页脚视图滚动到可以看到的位置,并且 UITextField 隐藏在键盘下。我什至无法手动滚动表格足够远,因为页脚总是在 UITableView 的底部。

添加了一些信息。有效的场景有很多行数据,而无效的场景只有几行。我尝试添加一些行,直到表格足以启用滚动并且它不能解决问题。

我已经检查了我能想到的所有内容,但我看不到任何可以让其中一个视图让 UITableView 自动调整大小以使用键盘而另一个不能使用的东西。我一定忽略了一些东西,但我似乎找不到它。

任何帮助将不胜感激!

罗伯

【问题讨论】:

【参考方案1】:

我认为这个问题是由从一个视图复制并粘贴到另一个视图引起的,但是一旦我(理论上)修复了它,我就遇到了同样的问题。

对我来说答案很简单:我没有在 UITableViewController 子类的 viewWillAppear: 实现中调用 [super viewWillAppear:animated]。确保你已经调用了超类的方法,希望问题会消失。

【讨论】:

【参考方案2】:

我猜在第二种情况下,tableview 的框架没有被调整为较小的尺寸。

在加载后打印出两种情况下的框架和内容大小,这应该可以帮助您查看是否存在问题。

【讨论】:

以上是关于UITextField 成为第一响应者后,UITableView 不会调整大小的主要内容,如果未能解决你的问题,请参考以下文章

在 tableView 中插入新行后保存成为第一响应者的 UITextField 文本

UITextField 不能成为 UITableView 中的第一响应者

UITextField 没有成为集合视图中的第一响应者

为啥 uitextfield 在成为第一响应者时从不返回 nil?

当 UITextField 成为第一响应者时禁用 UIScrollView 滚动

UITableView 中的 UITextField 没有成为第一响应者