如何在ios中的特定collectionview单元格上应用手势识别器

时间:2013-07-10 06:19:45

标签: ios6 uigesturerecognizer uicollectionview uicollectionviewcell

我在特定的UICollectionViewCell上应用了手势识别器。它工作正常。但是在重新加载uicollectionview之后,这个手势识别器将应用于collectionviewcell。 假设我有10个细胞。我在第1,第3,第4,第6,第7,第9个细胞上应用手势识别器。其余的细胞第2,第5,第8细胞没有手势识别器。它第一次工作完美。重新加载集合视图后,第2,第5,第8个单元格也有手势识别器,但我不想要。如何解决这个问题。请帮帮我。

2 个答案:

答案 0 :(得分:3)

这是因为UICollectionView重用了不再可见的单元格。 (假设你有100个单元格,只有8个可见--UICollectionView将至少保留8个单元格,其他单元格可以重复使用)mwthod: – dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:

因此,在您的方法中:

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

当你的单元格出列时,你应该重置手势识别器,或者如果你不需要它们就移除

答案 1 :(得分:2)

您应该始终将手势识别器附加到集合视图本身 - 而不是特定的单元格或视图。 UICollectionView类是UIScrollView的后代,因此将手势识别器附加到集合视图不太可能干扰必须跟踪的其他手势。此外,由于集合视图可以访问您的数据源和布局对象,因此您仍然可以访问正确操作单元格和视图所需的所有信息。

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