29

我试过这个:

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView

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

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

确实开火了,所以代表不是问题。

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

4

2 回答 2

72

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

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

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

您可以通过contentOffset属性检查这一点,例如:

if (scrollView.contentOffset.y == 0) { // TOP }
于 2013-04-02T19:42:00.270 回答
5

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

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

奖励:如果您想避免在加载内容之前获得 0,请检查 contentSize:

if tableView.contentSize.height > 0 && 
    ((tableView.contentOffset.y + tableView.safeAreaInsets.top) == 0) { ... }
于 2020-01-22T10:51:38.510 回答