自动滚动 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 滚动后以编程方式创建的 UITableViewCell 未正确显示