iOS-在屏幕边缘检测panGesture以打开侧边菜单+ UICollectionView并进行水平滚动

时间:2018-10-05 12:29:54

标签: ios swift uipangesturerecognizer swrevealviewcontroller side-menu

我的UIViewController中只有一个UICollectionView。

我正在使用SWRevealViewController打开左侧/右侧菜单。我可以将其panGestureRecognizer设置为提供全屏平移。

view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
  

以下方法将提供适合的panGestureRecognizer   可以添加到任何视图中以执行通常的拖动和滑动   手势以揭示后方的看法。通常将其添加到顶部   前端控制器的栏,但可以将其添加到   frontViewController视图或向显示控制器视图提供   全屏平移。默认情况下,添加了panGestureRecognizer   到包含前控制器视图的视图。保持默认   行为,您仍然需要调用此方法,只是不要将其添加到   您的任何意见。默认设置允许您禁用用户   控制器视图上的交互,而不会影响   识别器。

我的问题是,在UICollectionView的特定单元格上,边缘没有任何间距。 cellWidth = collectionView.bounds.size.width AND 此单元格包含一个具有水平滚动的UICollectionView。

与其打开我的左/右菜单,它只是水平滚动我的UICollectionView。

我想处理这种情况:

1::如果panGesture位于UICollectionViewCell中,该UICollectionViewCell包含具有水平滚动的UICollectionView。

2 :检测手势在水平轴上的位置,如果它位于屏幕边缘,请不要触发UICollectionView的水平滚动,而要触发panGesture来打开菜单

阅读了大量文章和官方文档后,我发现了这个UIScreenEdgePanGestureRecognizer

但是这个逻辑也应该通过重写方法shouldReceiveTouch来完成,对吗?

关于我应该如何实现的任何提示?

编辑:

在阅读评论中建议的问题后,这是我尝试过的方法,但是不起作用。

let edgePanGesture = UIScreenEdgePanGestureRecognizer()
collectionView.panGestureRecognizer.require(toFail: edgePanGesture)

我在包含水平collectionView的单元格中进行了设置,但无法正常工作。

我可能会缺少一些帮助吗?

0 个答案:

没有答案