我的 Viewcontroller 加载了一个 UIPageViewController。
View Controller 具有被 PageViewControllers 手势识别器覆盖的按钮。
例如,我在 viewcontroller 的右侧有一个按钮,当您按下该按钮时,PageViewController 会接管并更改页面。
如何让按钮接收触摸并取消 PageViewController 中的手势识别器?
我认为 PageViewController 使我的 ViewController 成为其 View 的 subview 。
我知道我可以关闭所有手势,但这不是我想要的效果。
我宁愿不要将 PageViewController 子类化,因为苹果说这个类不应该被子类化。
最佳答案
这是另一个解决方案,可以在 Xcode 模板的 self.view.gestureRecognizers = self.pageViewController.gestureRecognizers
部分之后添加到 viewDidLoad
模板中。它避免打乱手势识别器的内部结构或与它的代表打交道。它只是从 View 中删除点击手势识别器,只留下滑动识别器。
self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
// Find the tap gesture recognizer so we can remove it!
UIGestureRecognizer* tapRecognizer = nil;
for (UIGestureRecognizer* recognizer in self.pageViewController.gestureRecognizers) {
if ( [recognizer isKindOfClass:[UITapGestureRecognizer class]] ) {
tapRecognizer = recognizer;
break;
}
}
if ( tapRecognizer ) {
[self.view removeGestureRecognizer:tapRecognizer];
[self.pageViewController.view removeGestureRecognizer:tapRecognizer];
}
现在要在页面之间切换,您必须滑动。点击现在仅适用于页面 View 顶部的控件(这正是我所追求的)。
关于ios - UIPageViewController 手势识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788780/