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

Posted

技术标签:

【中文标题】具有 UIView 作为子视图的 UICollectionView 的选择性手势识别【英文标题】:Selective gesture recognition for UICollectionView having UIView as subview 【发布时间】:2018-03-01 06:01:21 【问题描述】:

我正在开发目标 c 中的 ios 应用程序。对于其中一个屏幕,我有一个水平 UICollectionView(我们称之为 collectionView),其中的单元格添加了一个 UIView(我们称之为 myView)作为其子视图。这两个视图(collectionView 和 myView)都通过 XIB 托管在 View Controller 中。还有另一个 UIImageView(我们称之为 imageView)作为 myView 中的子视图托管。在 myView 中添加了一些手势(捏合、敲击等),这些手势会反映在 imageView 上。

我想向其中一个视图添加滑动手势(不确定是哪一个)。当用户在屏幕上滑动时,滑动手势应该由 collectionView 处理(它应该滚动到下一个单元格)。定义的其余手势(捏、敲等)应由各自的子视图处理。非常感谢任何帮助。

【问题讨论】:

该功能应该以这样一种方式工作,即滑动手势只能被 collectionView 识别,而子视图(imageView、myView)上的其余(预先存在的)手势应该被仅限子视图。在某种程度上,使用滑动手势时应该禁用子视图的用户交互,以便将其识别为collectionView的可滚动手势。 【参考方案1】:

我假设您想使用滑动手势滚动到下一个单元格。 您可以在不使用滑动手势的情况下执行此操作,并使用集合视图的滚动功能。您还可以启用集合视图的“分页”属性以一次滚动一个单元格。 如果这能解决您的问题或者您需要实现一些其他功能,请告诉我。

【讨论】:

该功能应该以这样一种方式工作,即滑动手势只能被 collectionView 识别,而子视图(imageView、myView)上的其余(预先存在的)手势应该被仅限子视图。在某种程度上,使用滑动手势时应该禁用子视图的用户交互,以便将其识别为collectionView的可滚动手势。

以上是关于具有 UIView 作为子视图的 UICollectionView 的选择性手势识别的主要内容,如果未能解决你的问题,请参考以下文章

UIView 越界时隐藏子视图

调整旋转 UIView 的子视图大小

“隐藏”具有自动布局子视图的 UIView

具有拐角半径和阴影视图的 UIView 不会在拐角处剪辑子视图

在 UIView 中调用 UIViewController 视图作为子视图的问题

uiview 作为包含 uitableview 的子视图