将TableView标题粘贴到顶部会导致标题无法与#34;交互"当用户向下滚动时

时间:2015-02-26 13:15:08

标签: ios uitableview swift uiscrollview uiscrollviewdelegate

当用户向下滚动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 个答案:

答案 0 :(得分:0)

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

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