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 に答える