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

Posted

技术标签:

【中文标题】如何在ios中的特定collectionview单元格上应用手势识别器【英文标题】:How to apply gesture recognizer on particular collectionview cells in ios 【发布时间】:2013-07-10 06:19:44 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

因此,在您的方法中:

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

当您将单元格出列时,您应该重新设置手势识别器,或者如果您不需要它们则移除它们

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何在ios中的特定collectionview单元格上应用手势识别器的主要内容,如果未能解决你的问题,请参考以下文章

如何从从json获得的url加载图像到collectionview

如何在 iOS 中更新 collectionView?

在 iOS Swift 中,在 Swift 4 中的 TableView 中为 CollectionView 集成不同的数组

为 collectionView 中的每个其他项目设置特定布局

如何在 willDisplay 单元格回调中访问 UICollectionView 中的特定单元格

如何在 CollectionView iOS 中停止自动重新加载和刷新图像