Ios 告知UITableView是否已滚动到顶部

Ios 告知UITableView是否已滚动到顶部,ios,objective-c,xcode,cocoa-touch,Ios,Objective C,Xcode,Cocoa Touch,我试过这个: - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView 但当我将表格视图滚动到顶部时,它没有启动 - (void)scrollViewDidScroll:(UIScrollView *)scrollView 这样代理就不是问题了 在viewDidLoad中,我还设置了[myTbl setdoescroldtop:YES]当用户单击状态栏并且scrollsToTop属性设置为YES时,scrollViewDidScr

我试过这个:

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
但当我将表格视图滚动到顶部时,它没有启动

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
这样代理就不是问题了


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

当用户单击状态栏并且
scrollsToTop
属性设置为
YES
时,
scrollViewDidScrollToTop:
方法触发。从文档中:

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

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

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

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

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

if (tableView.contentOffset.y + tableView.safeAreaInsets.top) == 0 { ... }
奖励:如果要避免在加载内容之前获得0,请检查contentSize:

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

当你触摸状态栏时,scrollViewDidScrollToTop会启动吗?很好,解释了很多。我想补充的是,“top”为0并不一定总是正确的,这取决于tableview的内容插入和周围的上下文,所以您可能需要考虑到这一点。@joakim在我的例子中,我确实使用了
scrollView.contentOffset.y