自动滚动 UITableView 以显示正在编辑的行**下方**行

Posted

技术标签:

【中文标题】自动滚动 UITableView 以显示正在编辑的行**下方**行【英文标题】:Automatically scroll UITableView to show row **below** the row being edited 【发布时间】:2015-09-03 12:00:06 【问题描述】:

我在 ViewController(不是UITableViewController)中有UITableView,每行都有UITextFields。我希望 TableView 自动滚动,以便始终显示正在编辑的行 below 的行。这允许用户点击下一行来编辑它。内置的 ios 提醒应用程序具有此行为。

我关注了Apple's advice on managing the keyboard,但它只会滚动显示您正在键盘上方编辑的行,而不是它下方的行

我尝试在scrollRectToVisible: 中调整框架,但没有任何区别。事实上,注释掉那行代码似乎完全没有效果。

似乎UITableView 将始终尝试滚动以显示在键盘上方正在编辑的UITextfield,我找不到调整或覆盖此行为的方法,以便它显示下面的行也。

更新:

我发现可以通过覆盖UITextField 的私有scrollTextFieldToVisible 方法来防止自动滚动行为。 但是,苹果在链接文档中提供的自动滚动代码仍然不起作用。

【问题讨论】:

您可能想阅读相关文档:developer.apple.com/library/ios/documentation/UIKit/Reference/… 【参考方案1】:

您可以尝试设置 setContentOffset 属性而不是 scrollRectToVisible。喜欢

[self->_scrollView setContentOffset:CGPointMake(0, textFieldRect.origin.y)];

【讨论】:

【参考方案2】:

请点击以下链接,这将使您的工作变得非常轻松。 只需添加文件并将 tableview 类名称设置为“TPKeyboardAvoidingTableView”

https://github.com/michaeltyson/TPKeyboardAvoiding

【讨论】:

以上是关于自动滚动 UITableView 以显示正在编辑的行**下方**行的主要内容,如果未能解决你的问题,请参考以下文章

滚动时 UITableView 崩溃

在 UITableview 中平滑滚动以显示聊天记录

UITableView 滚动后以编程方式创建的 UITableViewCell 未正确显示

在顶部和底部停止滚动UITableView?

按下按钮时滚动以刷新 iOS - 非 UITableView

UITableView:停止自动滚动超出所选位置