0

특정 UICollectionViewCell에 제스처 인식기를 적용했습니다. 그것은 잘 작동합니다. 그러나 uicollectionview를 다시로드 한 후에는이 제스처 recongizer가 collectionviewcell에 적용됩니다. 내가 10 개의 세포를 가지고 있다고 가정 해보십시오. 1, 3, 4, 6, 7, 9 번째 세포에 제스처 recongizer를 적용합니다. 나머지 세포 2, 5, 8 세포에는 제스처 인식기가 없습니다. 그것은 처음으로 완벽하게 작동합니다. 컬렉션보기를 다시로드 한 후 2, 5, 8 번째 셀에도 제스처 인식기가 있지만 원하는 것은 아닙니다. 이 문제를 해결하는 방법. 도와주세요.ios의 특정 collectionview 셀에 제스처 인식기를 적용하는 방법

답변

3

이것은 UICollectionView가 더 이상 보이지 않는 셀을 다시 사용하기 때문입니다. (100 개 세포 만 8 볼 수 있다고 가정 - 최소 8 개 세포를 유지합니다 UICollectionView를, 다른 사람이 재사용 될 수있다하여 초기화) mwthod : – dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:

따라서, 귀하의 방법 :

- (UICollectionViewCell *)cellForItemAtIndexPath:(NSIndexPath *)indexPath

을 셀을 대기열에서 제외하려면 제스처 인식기를 재설정하거나 필요없는 경우 제거해야합니다.

2

제스처 인식기는 항상 특정 셀이나 뷰가 아닌 콜렉션 뷰 자체에 연결해야합니다. UICollectionView 클래스는 UIScrollView의 자손이므로, 제스처 인식기를 콜렉션 뷰에 연결하면 추적해야하는 다른 제스처를 방해 할 가능성이 줄어 듭니다. 또한 컬렉션 뷰는 데이터 소스 및 레이아웃 객체에 액세스 할 수 있기 때문에 셀 및 뷰를 적절하게 조작하는 데 필요한 모든 정보에 계속 액세스 할 수 있습니다.

https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/IncorporatingGestureSupport/IncorporatingGestureSupport.html

관련 문제