判断UITableView是否已滚动到顶部

时间:2013-04-02 19:38:14

标签: ios objective-c xcode cocoa-touch

我试过了:

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

是否触发代表不是问题。

在viewDidLoad中,我还设置了[myTbl setDoesScrollToTop:YES];

2 个答案:

答案 0 :(得分:61)

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

  

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

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

您可以通过contentOffset属性进行检查,例如:

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

答案 1 :(得分:3)

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

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

奖金:如果要避免在加载内容之前获取0,请检查contentSize:

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