0

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

4

2 回答 2

3

这是因为 UICollectionView 重用了不再可见的单元格。(假设您有 100 个单元格并且只有 8 个可见 - UICollectionView 将保持至少 8 个单元格初始化,其他可能会被重用) mwthod: – dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath:

因此,在您的方法中:

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

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

于 2013-07-10T06:30:26.870 回答
2

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

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

于 2014-12-06T20:25:09.137 回答