我试过了:
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
但是当我将表格视图滚动到顶部时它没有触发。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
是否触发代表不是问题。
在viewDidLoad中,我还设置了[myTbl setDoesScrollToTop:YES];
答案 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) { ... }