objective-c – 在ios6中,将pageViewController的gestureRecogni
这只是在ios6上开始发生,但是如果你使用页面视图控制器模板启动一个新项目.然后在
PCRootViewControlle::viewDidLoad() 将行添加到方法的底部. for (UIGestureRecognizer *gR in self.pageViewController.gestureRecognizers) { gR.delegate = self; } 您需要分配viewController以使其符合UIGestureRecognizerDelegate并实现该方法 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch (UITouch *)touch { return YES; } 现在,如果您运行应用程序并尝试将页面超出界限,即转到1月并尝试返回 >(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 返回零. 该应用程序将崩溃. ios5没有发生这种情况.我需要将gestureRecognizer委托分配给我的viewController,因为我并不总是希望pageViewController处理触摸事件. 有没有其他经历过这个或指出如果我做错了什么? 非常感谢 解决方法
终于找到了我的问题的解决方案,这让我感到悲伤,所以希望这可以帮助别人.
问题是如果将pageViewControllers委托设置为viewController for (UIGestureRecognizer *gR in self.pageController.view.gestureRecognizers) { if ([gR isKindOfClass:[UITapGestureRecognizer class]]) { gR.enabled = NO; } else if ([gR isKindOfClass:[UIPanGestureRecognizer class]]) { gR.delegate = self; } } 然后返回零 pageViewController:viewControllerAfterViewController: 会崩溃!仅限iOS6 !! 我的问题是我需要设置gestureRecognisers的委托,因为我需要在某些情况下截取panGesture,即不允许用户翻页,因为那里有一些按钮触摸它的某些部分. 解决方案是从逻辑中解决 pageViewController:viewControllerAfterViewController: 成 gestureRecognizer:shouldReceiveTouch: 因为只要我们从那里返回NO,它就不会继续打电话 pageViewController:viewControllerAfterViewController: 所以不需要返回nil并且崩溃. 但是,这在序列的第一页和最后一页上不起作用.例如,在第一页上,您希望允许页面前进但不返回.所以我想看看传入的GestureRecogniser,将其投射到PanGesture,然后检查速度,如果速度表示转回(> 0.0f),则返回NO.这听起来不错,但速度始终为零. 然后我在GestureRecognizer委托上找到了一个非常有用的小功能: gestureRecognizerShouldBegin:gestureRecognizer 之后调用此函数 gestureRecognizer:shouldReceiveTouch: 但是这次来自手势的速度是我所期望的,所以我可以检查速度,如果是>,则只返回第一页的YES. 0.0F (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |