ios - iOS - 在屏幕边缘检测 panGesture 以打开侧面菜单 + UICollectionView 与水平滚动
问题描述
我的 UIViewController 中只有一个 UICollectionView。
我正在使用 SWRevealViewController 打开左侧/右侧菜单。我可以设置它的 panGestureRecognizer 来提供全屏平移。
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
以下方法将提供一个适合添加到任何视图的 panGestureRecognizer,以便执行通常的拖动和滑动手势以显示后视图。这通常添加到前端控制器的顶部栏,但它可以添加到您的 frontViewController 视图或显示控制器视图以提供全屏平移。默认情况下,panGestureRecognizer 被添加到包含前端控制器视图的视图中。为了保持这个默认行为,你仍然需要调用这个方法,只是不要将它添加到你的任何视图中。默认设置允许您在不影响识别器的情况下禁用控制器视图上的用户交互。
我的问题是,在 UICollectionView 的特定单元格上,边缘没有任何间距。cellWidth = collectionView.bounds.size.width
AND这个单元格包含一个带有水平滚动的 UICollectionView。
而不是打开我的左/右菜单,它只是水平滚动我的 UICollectionView。
我想处理这种情况:
1:如果 panGesture 位于包含 UICollectionView 的 UICollectionViewCell 内,并且水平滚动。
2:检测横轴上的手势位置,如果在屏幕边缘,不触发UICollectionView的水平滚动而是触发panGesture打开菜单。
在阅读了很多文章和官方文档后,我发现了这个UIScreenEdgePanGestureRecognizer。
而且这个逻辑应该通过重写方法shouldReceiveTouch来完成,对吗?
关于我应该如何实现这个的任何提示?
编辑:
在阅读了评论中建议的问题后,这是我尝试过的,但它不起作用。
let edgePanGesture = UIScreenEdgePanGestureRecognizer()
collectionView.panGestureRecognizer.require(toFail: edgePanGesture)
我在包含水平 collectionView 的单元格中设置了它,但它不起作用。
我可能遗漏了一些东西,有什么帮助吗?
解决方案
推荐阅读
- azure - 将文件从 Azure Web 应用复制到 Azure 存储
- r - 如何从 R 中数据框中的行中删除模式?
- jdbc - 使用 pyspark 使用 JDBC 读取时使用 customSchema 的说明
- r - 随机选择行但有约束
- javascript - PWA React 无法加载页面
- docker - Docker for Windows 中的磁盘空间问题
- javascript - React 中的动态进度条
- bash - 从文件列表创建 Tar、Log 和 Zip 文件的脚本
- debugging - 无法在 v8 运行时访问异常属性
- c - 如何在 Linux 内核模块内的快捷方式的 printk 宏中避免引号(“...”)