我的问题类似于:UIScrollView cancels UIPageViewController gestures when scrolling但它仍然没有答案。我有一个uipageviewcontroller来显示pdf,每个控制器都是一个pdf页面...每个控制器都有一个滚动视图,显示pdf页面,以便用户可以滚动或放大页面。问题是“拖动”首先被pageviewcontroller(更改页面)“捕获”,即使它是垂直拖动。我想检测pageviewcontroller是否拖动vetical(在页面中垂直滚动),这意味着滚动从那里“捕获”任何拖动手势。现在我必须双击(缩放)或用2个手指进行缩放以告诉我的应用我希望滚动视图“捕捉”拖动手势(使其成为first responder
或类似的东西) 。换句话说,我希望始终优先滚动更改页面。这是真的吗?请帮忙。
答案 0 :(得分:0)
UIGestureRecognizer
类可以使用requireGestureRecognizerToFail:方法设置对其他手势识别器的依赖关系。
在您的情况下,可以使用此方法:
for (UIGestureRecognizer *gestureRecognizerForFail in pageController.gestureRecognizers) {
for (PDFController *pdfController in pdfControllers) {
for (UIGestureRecognizer *gestureRecognizer in pdfController.scrollView.gestureRecognizers) {
[gestureRecognizerForFail requireGestureRecognizerToFail:gestureRecognizer];
}
}
}
其中PDFController
是包含scrollView的类,应该以更高的优先级滚动页面控制器。