如何检测滚动到水平 UICollectionView 的末尾
Posted
技术标签:
【中文标题】如何检测滚动到水平 UICollectionView 的末尾【英文标题】:How to detect scrolling to an end of an horizontal UICollectionView 【发布时间】:2014-06-15 15:40:25 【问题描述】:您是否知道一种方法来检测用户何时滚动到 UICollectionView 的末尾(或开头)(以加载新内容)。由于 UICollectionView 水平滚动而不是垂直滚动,因此我对滚动到顶部/底部不感兴趣,而是滚动到最左边/最右边。
到目前为止,我发现的唯一方法是将 UICollectionView 子类化,然后将视图控制器注册为委托,当集合视图 willLayoutSubviews
时通知该委托并相应地执行计算。
但是假设我不想继承 UICollectionView,有没有办法检测到 UICollectionView 的结尾/开头的滚动?
编辑:
由于 UICollectionView 继承自 UIScrollView
,我可以使用它的委托方法。它如何与水平滚动一起使用?
谢谢
【问题讨论】:
【参考方案1】:- (void)scrollViewDidScroll:(UIScrollView *)scrollView
CGFloat offsetX = scrollView.contentOffset.x;
CGFloat contentWidth = scrollView.frame.size.width;
NSLog(@"offset X %.0f", offsetX);
// If your UICollectionView has 3 cell, the contentWidth is 320,
// When you scroll from beginning to end of the UICollectionView, it will print:
// offset X 0
// offset X 1
// offset X 2
// ......
// offset X 320
// offset X 640
【讨论】:
【参考方案2】:- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if ([scrollView isKindOfClass:[UICollectionView class]] == YES)
CGFloat threshold = 100.0 ;
CGFloat contentOffset = scrollView.contentOffset.x;
CGFloat maximumOffset = scrollView.contentSize.width - scrollView.frame.size.width;
if ((maximumOffset - contentOffset <= threshold) && (maximumOffset - contentOffset != -5.0) )
//Your code
【讨论】:
以上是关于如何检测滚动到水平 UICollectionView 的末尾的主要内容,如果未能解决你的问题,请参考以下文章
使用按钮检测水平滚动 UIScrollView 上的垂直滚动