4

假设标准配置(向上/向下),我想检测用户何时UIColletionView向上或向下滚动(这是的子类UIScrollView并符合UIScrollViewDelegate)。我没有直接从代表那里看到任何信息来检测这一点,尽管我可能看多了一些东西。

如果我知道用户滚动的方向,那么我可以使用这些UICollectionViewDatasource方法来确定是否应该从 REST 服务器加载更多数据,或者清除我已经必须管理固定内存空间的信息。

// 如果向下滚动,则显示部分

- (UICollectionReusableView *)collectionView:(UICollectionView *)cv viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

// 如果向下滚动,部分中的最后一个单元格将消失

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{

// 如果向上滚动,则显示部分中的最后一个单元格

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {

// 如果向上滚动,部分正在消失

- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath{
4

2 回答 2

10

您可以检查 UIScrollView 的( UICollectionView 继承自) panGestureRecognizer 属性并执行以下操作:

CGPoint scrollVelocity = [collectionView.panGestureRecognizer velocityInView:collectionView.superview];
if (scrollVelocity.y > 0.0f) {
    NSLog(@"going down");
} else if (scrollVelocity.y < 0.0f) {
    NSLog(@"going up");
}

斯威夫特 3.1

let scrollVelocity = collectionView.panGestureRecognizer.velocityInView(collectionView.superview)
if (scrollVelocity.y > 0.0) {
    print("going down")
} else if (scrollVelocity.y < 0.0) {
    print("going up")
}
于 2013-04-19T19:55:35.020 回答
0

你也可以使用这个:

CGPoint translation = [collectionView.panGestureRecognizer translationInView:collectionView.superview];
        if (translation.y > 0) {
            NSLog(@"DOWN");
        } else {

            NSLog(@"UP");
        }

更准确的

于 2014-09-01T17:07:24.440 回答