在线编辑文本字段时,UITableViewController 不会自动调整其表格视图的大小和位置

Posted

技术标签:

【中文标题】在线编辑文本字段时,UITableViewController 不会自动调整其表格视图的大小和位置【英文标题】:UITableViewController does not automatically resizes and repositions its table view when there is in-line editing of text fields 【发布时间】:2013-10-06 12:56:39 【问题描述】:

更新(已经解决):) 我试图从头开始重新创建我的场景。我发现如果表视图控制器的类是“UITableViewController”,当键盘出现时视图的重新定位发生正确。但是当我将表视图控制器的类设置为我的自定义类时,不会发生重新定位。为什么会这样?鉴于我的自定义类是 UITableViewController 的子类,并且在我的实现中没有实现任何数据源和数据委托,因为我使用的是静态单元格?

我忘记在我的接口声明中添加委托。现在它已经开始工作了。

@interface CustomClass : UITableViewController <UITableViewDelegate>

我有一个 UITableViewController,其中 tableview 内容是静态单元格,样式很简单。我添加了 7 个表格视图单元格。在每个单元格中,我添加了一个文本字段。

当我点击表格视图单元格时,键盘显示但表格视图没有重新定位;从而隐藏了我选择的表格视图单元格。

我之前已经解决了这个问题,但是我使用了一个视图控制器,然后我将它嵌入到一个滚动视图中。但是从文档来看,UITableViewController,默认有一个滚动视图,应该会自动调整它的表格视图的大小和位置。

我正在开发 XCode 5 并使用 ios 7 最新版本。

【问题讨论】:

【参考方案1】:

只要 textField 的操作为 didBeginEditing,您就可以更改 tableView 的偏移量 (y)。

如果您需要更多帮助,请告诉我;D

【讨论】:

我尝试设置偏移量,但是键盘后面的底部出现了一个黑色区域,并且 tableview 根本没有向上滚动。我粘贴了我使用的代码。抱歉,我的 UI 不太好,所以它可能完全是错误的。如果您在开始和结束编辑方法中都有示例代码,将不胜感激【参考方案2】:

它应该自动改变它的大小,但不一定要调整它的位置/偏移量。

您确定表格视图仍然覆盖整个屏幕,甚至在键盘下方? 您可以通过滚动并查看滚动条来检查这一点。

如果要调整内容偏移量,请在用户开始编辑文本字段时在回调中进行。

【讨论】:

我试图设置偏移量,但是键盘后面的底部出现了一个黑色区域,并且 tableview 根本没有向上滚动。我粘贴了我使用的代码。抱歉,我的 UI 不太好,所以它可能完全是错误的。如果您在开始和结束编辑方法中都有示例代码,将不胜感激【参考方案3】:

去掉设置表格视图内容偏移的代码。

具有第一响应者状态的文本字段的表格单元格应在键盘上方自动滚动。您不必为此编写代码。

如果您使用的是静态单元格,请确保您的表格视图控制器未实现表格视图数据源方法。此外,您拖到 IB 画布上的视图控制器必须是 UITableViewController;它不能是包含从对象库中拖出的 UITableView 的 UIViewController。

【讨论】:

我已经删除了该代码。我知道我什至不应该放那个代码,因为我使用的是 uitableviewcontroller ......但是请参阅我对我发现的问题的更新。需要你的建议。谢谢。【参考方案4】:

经过彻底检查,我意识到,我的自定义类只是 UITableViewController 的子类,而不添加委托:(

下面解决了问题……终于! :)

@interface CustomClass : UITableViewController <UITableViewDelegate>

【讨论】:

以上是关于在线编辑文本字段时,UITableViewController 不会自动调整其表格视图的大小和位置的主要内容,如果未能解决你的问题,请参考以下文章

编辑文本字段时更改标签文本

django中集成富文本编辑器

IOS swift - 如何在点击文本字段时打开新视图控制器后结束文本字段中的编辑

linux shell 之在线文本编辑sed

编辑时如何更改 UITextField

当文本字段开始编辑时停止 UITableView 滚动