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

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

提前致谢!

有几个可能的解决scheme,我可以想到的:

1)你可以使用这个委托的方法:

的tableView:didEndDisplayingHeaderView:forSection:

但是,只有在方法中提供标题时,才会调用此方法

的tableView:viewForHeaderInSection:

你说'不是部分头',但是你可以使用分组tableView中的第一个部分头作为表头部视图。 (分组是为表头将与表视图一起滚动)

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; } 

希望能帮助到你。

下面是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 } }