UITableView 滚动到单元格顶部
Posted
技术标签:
【中文标题】UITableView 滚动到单元格顶部【英文标题】:UITableView scroll to the top of the cell 【发布时间】:2016-02-02 13:27:20 【问题描述】:我有一个带有 3 个静态单元格的 UITableViewController。一个在顶部的高度为 60.0,一个在底部的大小相同。中间单元格的高度是动态的,非常大,所有 3 个单元格一起填满了整个屏幕。 中间单元格包含一个填充整个单元格的 UITextView。 我的问题是,当我想在该 TextView 中键入内容时,tableview 会在键盘上升时自动滚动,并且在我手动回滚之前,我看不到包括光标在内的单元格顶部。 有什么办法可以防止表格视图像这样自动滚动?或者告诉它应该滚动到单元格的顶部以便我看到光标?
我已经尝试覆盖viewWillAppear(_:)
方法而不调用它的超级方法,但是我无法手动滚动表格视图,因此当键盘可见时我无法到达最后一个单元格。
我还尝试手动滚动到textViewDidBeginEditing(_:)
内的单元格,但它没有任何改变。我的方法看起来像这样。
func textViewDidBeginEditing(textView: UITextView)
let indexPath = NSIndexPath(forRow: 1, inSection: 0)
self.tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
我不知道我还能尝试什么,所以非常感谢您的帮助。
【问题讨论】:
【参考方案1】:好吧,你可以像这样设置tableView的contentInset:
self.tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 80, right: 0)
因此您可以使用底部来补偿您想要的偏移量。
【讨论】:
这使得表格视图滚动到底部更多:/并且底部巨大的空白空间看起来并不好 在开始编辑时尝试不同的值或负值来调整它,当结束编辑被调用时,只需将其返回到0 我为底部和顶部尝试了不同的值,但它们都不起作用。实际上,它只会使您无法在键盘可见的情况下转到第一个/最后一个单元格。 ://【参考方案2】:mainTableView.scrollsToTop = true
或
mainTableView.setContentOffset(CGPointZero, animated:true)
【讨论】:
以上是关于UITableView 滚动到单元格顶部的主要内容,如果未能解决你的问题,请参考以下文章