2

UIPanGestureRecognizer을 사용하여 을 UICollectionViewCell에 팬합니다. 나는 양쪽에서 스 와이프 제스처를 구현 중입니다. 뷰를 원점으로 돌려 놓을 수 있기를 원하기 때문에 팬을 사용하고 있습니다.스크롤하는 동안 스 와이프하지 않고 UICollectionViewCell 위쪽에 스 와이프 구현

UICollectionView은 각 행이 단일 항목 셀 (생각 테이블) 인 행이있는 단일 섹션입니다.

문제는 내가 내 UICollectionView 아래로 스크롤 할 때 우연히 발생하는 작은 드래그 번역에 따라 실수로 셀이 이동하게됩니다. 나는 스크롤 중에 셀이 우연히 움직이는 것을 막기 위해 UIScrollViewDelegate 메서드를 구현하려고 시도했지만 '셀을 만지기'의 가장자리 경우에도 여전히 셀이 약간 이동하게합니다. 당신이 스크롤하고 엄지 손가락이 셀에 닿으면 많은 세포들이 주위를 돌고있는 것을 볼 수 있기 때문에 잘못 생각합니다.

스크롤하는 동안이 감도를 방지하는 방법에 대한 아이디어가 있습니까? 예를 들어 기본 Apple Mail.app에는 스크롤 할 때이 문제가없는 것 같습니다. 내장 저항의 일종있을 것 같습니다

몇 가지 아이디어 :.

  • 는 x 축에 대한 몇 가지 시작 K 폭에 대한 약간의 저항 기능을 적용 할 수 있습니다. 속도가 저항 "고비 (hump)"를보기에 충분하지 않은 경우 속도를 위해이 작업을 수행하십시오.
  • 팬 제스처 인식기 대신 UIScrollView을 사용 해보십시오.하지만 다른면에서도 스 와이프를 지원해야합니다.
  • 여기에 UIKit Dynamics를 사용해야한다고 생각합니까?

모든 아이디어를 얻을 수 있습니다.

답변

0

UICollectionViewCell의 유효성을 확인하려면 UICollectionView의 팬 제스처를 설정해보십시오. 이 방법을 사용 :

어쩌면 당신이 만든 셀에 속성을 추가하여 만들었습니까?

@interface YourCollectionViewCell : UICollectionViewCell 
@property (weak, nonatomic) UIGestureRecognizer *blockingGestureRecognizer; 

@property (strong, nonatomic) UIGestureRecognizer *internalSwipeGestureRecognizer; 
@end 

@implementation YourCollectionViewCell 
- (void)setBlockingGestureRecognizer:(UIGestureRecognizer *)blockingGestureRecognizer { 
    _blockingGestureRecognizer = blockingGestureRecognizer; 
    [self.internalSwipeGestureRecognizer requireGestureRecognizerToFail:blockingGestureRecognizer]; 
} 
@end 

@interface YourViewController : UIViewController 

#pragma mark - UICollectionViewDataSource 

- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:YourCollectionViewCell.identifier forIndexPath:indexPath]; 

    cell.blockingGestureRecognizer = collectionView.panGestureRecognizer; 

    return cell; 
} 
@end 

전체 경고, 나는 컴파일하지 않았거나이 방법을 테스트했지만 작동한다고 생각합니다. :)

관련 문제