我正在尝试使用interactivepopgesturerecognizer返回一个视图,其中我还有一个带水平滚动的UICollectionView,问题是在集合视图的框架中,返回的滑动不起作用,但是当触摸从集合视图的框架开始时起作用,这是我的观点的一个例子:
| ---> here works
|-----------
|
| ---> This is the collection view and doesn't swipe to go back
|
|-----------
| ---> here works
我怎么能解决问题?
编辑:我意识到只有在推入视图中导航条被隐藏时才会出现此问题,并且当隐藏时滑动返回不会在所有视图中都有效集合视图,并使其工作,我需要添加这一行:
[self.navigationController.interactivePopGestureRecognizer setDelegate:nil];
在主视图中,但是这样我就无法滑动回到集合视图中。 我创建了一个简单的测试来检查问题:
https://www.dropbox.com/s/c7ueyrcmm2x1m5w/TestSwipe.zip?dl=0
答案 0 :(得分:20)
将此行代码添加到SecondViewController中的viewDidLoad方法
[self.collectionView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
这实质上告诉集合视图的手势识别器,它需要等待交互式流行识别器在继续之前失败,从而强制优先处理交互式弹出窗口。
答案 1 :(得分:3)
Swift 3(加viewDidLoad
):
if let interactivePopGestureRecognizer = navigationController?.interactivePopGestureRecognizer {
collectionView.panGestureRecognizer.require(toFail: interactivePopGestureRecognizer)
}