将 TableView 标题粘贴到顶部,导致当用户向下滚动时标题不“交互”

Posted

技术标签:

【中文标题】将 TableView 标题粘贴到顶部,导致当用户向下滚动时标题不“交互”【英文标题】:Sticking a TableView Header to the top, causes the header to not "interact" when user scrolls down 【发布时间】:2015-02-26 13:15:08 【问题描述】:

当用户向下滚动UITableView 时,我将我的UITableView 标头贴在顶部。标题视图本身是一个UIButton,单击时会执行某些操作。

contentOffset Y 为0 时,按钮对触摸反应良好。然而,当用户向下滚动时,按钮仍然停留在顶部,但每次触摸都会“通过”它。

这是我将标题粘贴到顶部的代码:

  var offsetY = scrollView.contentOffset.y;
  var headerContentView: UIView = self.tableView.tableHeaderView?.subviews[0] as UIView;

  headerContentView.frame = CGRect(x: 0, y: max(0, offsetY), width: headerContentView.bounds.width, height: headerContentView.bounds.height);

谢谢。

【问题讨论】:

【参考方案1】:

如果您要在自己周围移动视图,请不要使用tableHeaderView。而是直接将其添加为表格视图的子视图并保留对它的引用。然后在scrollViewDidScroll: 中根据scrollView.contentOffset.y 布局视图的Y 偏移量。

您可能需要在viewDidLoad 中触发此布局,以便它在任何滚动事件发生之前正确显示。如果表格滚动到顶部时视图不应与顶部单元格重叠,请将视图的高度设置为表格的contentInsettop

【讨论】:

以上是关于将 TableView 标题粘贴到顶部,导致当用户向下滚动时标题不“交互”的主要内容,如果未能解决你的问题,请参考以下文章

单击 tableview 单元格时滚动到顶部搜索栏控制器

当tableview在顶部时如何进行分页

通过点击状态栏滚动到顶部 TableView 不起作用(有许多子视图)SWIFT

UITableView 在插入更多行时滚动到顶部

添加新数据时,Tableview 会滚动到顶部。无限滚动

升级到 iPhone OS 4 后,我的 TableView 在调用 reloadData 后滚动到顶部