手势识别器在其他 UICollectionViewCell 内的 UICollectionView 上不起作用

Posted

技术标签:

【中文标题】手势识别器在其他 UICollectionViewCell 内的 UICollectionView 上不起作用【英文标题】:Gesture recognizer doens't work on UICollectionViewCell inside of other UICollectionViewCell 【发布时间】:2015-04-18 05:02:51 【问题描述】:

我创建了UICollectionView 作为主要用户界面,每个collectionViewCell 占据了整个屏幕,并通过分页水平滚动。 事情进展顺利,直到我必须在父 CollectionViewCell 内部实现另一个 UICollectionView

所以.. 滚动手势可以是滚动父collectionView,也可以是滚动master CollectionViewCell 内的小collectionView。

我希望用户在尝试滚动那个小的 collectionView 区域时可以滚动浏览小的 collectionview,其中大部分是小块图像,而其他滚动动作会导致滚动主 CollectionView。

我相信UICollectionView 继承了UIScrollView,所以我认为在这种情况下我不需要添加手势识别器(平移)。我已经通过两种方式对此进行了测试,

    touchBegan 没有检测到我是否点击了小的 collectionview 区域。 如果我将 PanGesture 手动添加到小 collectionView 并且小 collectionView 中的滚动不会触发父 collectionView 滚动。

有没有想过从哪里开始?

【问题讨论】:

【参考方案1】:

我不确定,但也许你可以实现这个方法:

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

    return YES;

并确定在开始滑动时优先考虑谁。并返回 NO 或 YES。

【讨论】:

听起来像是一个计划。我如何知道已经为 UICollectionViewCell 添加的手势识别器以及我应该在哪里实现这个方法? 你应该在包含你的主 UICollectionView 的 View 中实现这个方法。并且 UIGestureRecognizer 有属性视图。使用它并输入gestureRocognizer。像这样的东西。

以上是关于手势识别器在其他 UICollectionViewCell 内的 UICollectionView 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView:将单击手势识别器添加到补充视图

UICollectionView的选择性手势识别,UIView为子视图

具有 UIView 作为子视图的 UICollectionView 的选择性手势识别

iOS 动画块手势识别器

UICollectionView:使用其他手势后未调用 didSelectItemAtIndexPath

带有平移手势识别器的UICollectionViewCell