如何检测滚动到水平UICollectionView的末尾

时间:2014-06-15 15:40:26

标签: ios objective-c uicollectionview

你知道一种方法来检测用户何时滚动到UICollectionView的结尾(或开头)(为了加载新内容)。由于UICollectionView水平滚动而不是垂直滚动,我对滚动到顶部/底部而不是最左边/最右边不感兴趣。

我到目前为止找到的唯一方法是子类化UICollectionView,然后将视图控制器注册为委托,通知集合视图willLayoutSubviews何时并相应地执行计算。

但是让我说我​​不想继承UICollectionView,有没有办法检测滚动到UICollectionView的结束/开头?

编辑: 因为UICollectionView继承自UIScrollView,所以我可以使用它的委托方法。如何使用水平滚动?

谢谢

2 个答案:

答案 0 :(得分:4)

- (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
}

答案 1 :(得分: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
        }
    }
}