告诉UITableView是否已经滚动到顶部



我试过了:

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView

但是当我将表格视图滚动到顶部时它没有触发

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

Does fire,所以委托不是问题。

在viewDidLoad我也设置了[myTbl setDoesScrollToTop:YES];

当用户点击状态栏并且scrollsToTop属性被设置为YES时,scrollViewDidScrollToTop:方法触发。来自文档:

滚动视图在完成滚动到内容顶部时发送此消息。如果内容的顶部已经显示,它可能会立即调用它。要使滚动到顶部的手势(点击状态栏)有效,必须将UIScrollView的scrollstoptop属性设置为YES。

如果用户手动滚动到顶部,则不会触发。如果你想处理这种情况,你必须实现scrollViewDidScroll:方法,并检查滚动是否在自己的顶部。

你可以通过contenttoffset属性来检查,例如:

if (scrollView.contentOffset.y == 0) { // TOP }

当表格视图在导航栏下并且启用了安全区域布局指南时,可以进行以下检查:

if (tableView.contentOffset.y + tableView.safeAreaInsets.top) == 0 { ... }

奖励:检查contentSize,如果你想避免在内容加载前得到0:

if tableView.contentSize.height > 0 && 
    ((tableView.contentOffset.y + tableView.safeAreaInsets.top) == 0) { ... }

最新更新