如何让 scrollViewDidScrollToTop 在 UITableView 中工作?

Posted

技术标签:

【中文标题】如何让 scrollViewDidScrollToTop 在 UITableView 中工作?【英文标题】:How can I get scrollViewDidScrollToTop to work in a UITableView? 【发布时间】:2010-01-21 23:25:42 【问题描述】:

我认为标题说明了一切。我希望在用户滚动到表格视图顶部时收到通知。

我尝试了以下方法,但没有成功,甚至在 .h 文件中添加了一个 UIScrollViewDelegate。

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
    NSLog(@"ScrolledToTop");

谢谢!

编辑:如果我按下状态栏,我可以让它调用。但如果我滚动到顶部,则不会。奇怪...它到达顶部时是否与表格视图弹跳有关?

【问题讨论】:

【参考方案1】:

如果你尝试这个会发生什么?

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
    if (scrollView.contentOffset.y == 0)
        NSLog(@"At the top");

【讨论】:

伙计,效率太低了。它被称为疯了。没有更好的办法吗? 没有更好的方法。每次滚动视图移动一个点时,它都必须检查一次。减少检查的唯一方法是检查用户在滚动后何时抬起手指,但不会立即通知您。取决于你想用它做什么。【参考方案2】:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

if (indexPath.row == 0 && indexPath.section == 0 ) 
    NSLog(@"Showing top cell");


够近了吗?

【讨论】:

其实不是。我希望它在到达 tableview 标题的顶部时调用。不是第一个细胞。不过感谢您的帮助!【参考方案3】:

func scrollViewDidScroll(_ scrollView: UIScrollView) 委托方法可以解决问题,但每次滚动视图移动一个点时都会调用它。一个不太过度活跃的选择可能是这样的:

func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
    if targetContentOffset.memory.y == 0.0 
       println("Reached the Top")

它让代理知道 scrollView 将在它实际到达顶部之前到达顶部,并且因为 targetContentOffset 是一个指针,您可以更改它的值来调整滚动视图完成其滚动动画的位置。

【讨论】:

【参考方案4】:

根据您的情况,另外两个可能更简单的选项是:

首先,如果您仅尝试检测 动画 的结果,可以通过自己为 contentOffset 设置动画或调用 UITableView scrollToRowAtIndexPath: 或 UICollectionView scrollToItemAtIndexPath: 来触发, 实施

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView 
    // You're now at the end of the scrolling animation

用手指手动滚动后不会调用此函数,这有时可能有用,也可能没有帮助。

其次,如果您尝试执行无限滚动等操作,即在到达顶部时刷新列表,或者在到达底部时加载另一页结果,一个简单的方法是只需在您的数据源cellForRowAtIndexPath: 中进行调用,这可能会节省您一起实现委托的需要。

【讨论】:

【参考方案5】:

在 Swift 中执行:

func scrollViewDidScroll(scrollView: UIScrollView) 
    print(scrollView.contentOffset.y) 

【讨论】:

以上是关于如何让 scrollViewDidScrollToTop 在 UITableView 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

Jfreechart柱状图如何让变成纯色

android中如何让文字环绕图片

如何让GridView 标题居中

请教如何让UIActivityIndicatorView永远居中

如何让ActionBar标题居中

EBS如何让从值集不显示