2013-04-19 3 views
4

표준 구성 (위/아래)을 가정하고 사용자가 UIColletionView을 위 또는 아래로 스크롤 할 때 (UIScrollView의 서브 클래스이고 UIScrollViewDelegate을 준수 함) 스크롤을 감지하고 싶습니다. 비록 내가 뭔가를 넘어서고 있을지 모르지만 나는 이것을 발견하기 위해 대의원의 정보를 곧바로 보지 못합니다.스크롤 방향 감지 UICollectionView, REST 데이터로드

사용자가 스크롤하는 방향을 알면이 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{ 
+0

이것을 확인하십시오. http://stackoverflow.com/questions/6217900/uiscrollview-reaching-the-bottom-of-the-scroll-view 아래쪽에 도달했는지 확인하십시오. – Peres

+0

나는 이미 바닥에 도달했는지 감지하는 방법을 이미 알고 있습니다. 고마워. – VaporwareWolf

+0

당신이 알고 있는지 알고 싶어하는 경우 (또는 아래) : http://stackoverflow.com/questions/7706152/iphone-knowing-if-a-uiscrollview-reached-the-top-or-bottom – Peres

답변

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") 
} 
+0

좋아! 정확히 내가 무엇을 찾고 있었는지. 만약 편집하지 못한다면, velocityInView가 float가 아닌 CGPoint 구조체를 반환한다는 것을 알 수 있습니다. 컬렉션 뷰가 수직 스 플러 인 경우 y 값을 확인해야합니다. – VaporwareWolf

+0

@HCHogan 시도했지만 scrollView null입니다. 당신의 뷰는 무엇입니까? UiCollectionView? – Dejell

+0

수정 사항을 확인하십시오. 내가 더 명확하게 작성했으면합니다. –

0

은 또한 당신이 사용할 수 있습니다 :

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

      NSLog(@"UP"); 
     } 

더 정확하게