隐藏导航栏时,使用带有水平滚动的 CollectionView 的 interactivepopgesturerecognizer
Use interactivepopgesturerecognizer with CollectionView with horizontal scroll when navigation bar is hidden
我正在尝试使用 interactivepopgesturerecognizer 返回一个视图,其中我还有一个水平滚动的 UICollectionView,问题是在 collection 视图的框架中滑动即可后退不起作用,但当触摸开始超出 collection 视图的框架时起作用,这是我的视图示例:
| ---> here works
|-----------
|
| ---> This is the collection view and doesn't swipe to go back
|
|-----------
| ---> here works
我该如何解决这个问题?
编辑:我意识到这个问题只有在推送视图中导航栏被隐藏时才会出现,而当隐藏时滑动返回根本不起作用不仅在 collection 视图中查看,而且要使其正常工作,我需要添加以下行:
[self.navigationController.interactivePopGestureRecognizer setDelegate:nil];
在主视图中,但这样我就无法在 collection 视图中滑动返回。
我创建了一个简单的测试来检查问题:
https://www.dropbox.com/s/c7ueyrcmm2x1m5w/TestSwipe.zip?dl=0
将这行代码添加到 SecondViewController 的 viewDidLoad 方法中
[self.collectionView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
这实质上告诉集合视图的手势识别器它需要等待交互式弹出识别器失败才能继续,强制优先处理交互式弹出。
Swift 3(添加到 viewDidLoad
):
if let interactivePopGestureRecognizer = navigationController?.interactivePopGestureRecognizer {
collectionView.panGestureRecognizer.require(toFail: interactivePopGestureRecognizer)
}
我正在尝试使用 interactivepopgesturerecognizer 返回一个视图,其中我还有一个水平滚动的 UICollectionView,问题是在 collection 视图的框架中滑动即可后退不起作用,但当触摸开始超出 collection 视图的框架时起作用,这是我的视图示例:
| ---> here works
|-----------
|
| ---> This is the collection view and doesn't swipe to go back
|
|-----------
| ---> here works
我该如何解决这个问题?
编辑:我意识到这个问题只有在推送视图中导航栏被隐藏时才会出现,而当隐藏时滑动返回根本不起作用不仅在 collection 视图中查看,而且要使其正常工作,我需要添加以下行:
[self.navigationController.interactivePopGestureRecognizer setDelegate:nil];
在主视图中,但这样我就无法在 collection 视图中滑动返回。 我创建了一个简单的测试来检查问题:
https://www.dropbox.com/s/c7ueyrcmm2x1m5w/TestSwipe.zip?dl=0
将这行代码添加到 SecondViewController 的 viewDidLoad 方法中
[self.collectionView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];
这实质上告诉集合视图的手势识别器它需要等待交互式弹出识别器失败才能继续,强制优先处理交互式弹出。
Swift 3(添加到 viewDidLoad
):
if let interactivePopGestureRecognizer = navigationController?.interactivePopGestureRecognizer {
collectionView.panGestureRecognizer.require(toFail: interactivePopGestureRecognizer)
}