如何检测UITableView标题何时滚动到可见区域?

时间:2015-01-09 17:59:33

标签: ios uitableview scroll

如何检测UITableView标题(表头,而不是节标题)何时滚动到可见区域?

提前致谢!

2 个答案:

答案 0 :(得分:9)

我能想到几种可能的解决方案:

<强> 1) 您可以使用此委托的方法:

  

的tableView:didEndDisplayingHeaderView:forSection:

但是,只有在方法

中提供标题时才会调用此方法
  

的tableView:viewForHeaderInSection:

您说'不是节标题&#39;,但您可以使用分组tableView中的第一个节头作为表headerView。 (分组用于标题将与表格视图一起滚动)

<强> 2) 如果您不想使用分组tableView和节标题,则可以使用scrollView的委托(UITableViewDelegate符合UIScrollViewDelegate)。只需检查tableView何时滚动到足以消失tableHeaderView。请参阅以下代码:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    static CGFloat lastY = 0;

    CGFloat currentY = scrollView.contentOffset.y;
    CGFloat headerHeight = self.headerView.frame.size.height;

    if ((lastY <= headerHeight) && (currentY > headerHeight)) {
        NSLog(@" ******* Header view just disappeared");
    }

    if ((lastY > headerHeight) && (currentY <= headerHeight)) {
        NSLog(@" ******* Header view just appeared");
    }

    lastY = currentY;
}

希望它有所帮助。

答案 1 :(得分:3)

以下是tableView如何指定自己tableViewHeader是否可见(Swift 3):

extension UITableView{

    var isTableHeaderViewVisible: Bool {
        guard let tableHeaderView = tableHeaderView else {
            return false
        }

        let currentYOffset = self.contentOffset.y;
        let headerHeight = tableHeaderView.frame.size.height;

        return currentYOffset < headerHeight
    }

}