【问题标题】:UITableView scroll to the top of the cellUITableView 滚动到单元格顶部
【发布时间】: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)
}

我不知道我还能尝试什么,所以非常感谢您的帮助。

【问题讨论】:

    标签: ios swift uitableview uitextview


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2014-05-08
      • 1970-01-01
      • 2012-01-05
      • 2018-11-02
      相关资源
      最近更新 更多