我试过了:
- (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) { ... }