2013-03-08 32 views

回答

1

页面视图控制器的卷曲导航由UIPanGestureRecognizerUITapGestureRecognizer触发。你可以在页面视图控制器的gestureRecognizers属性中找到这些。

在您的pageViewController:viewControllerBeforeViewController:方法和pageViewController:viewControllerAfterViewController:方法中,您可以要求平移手势识别器在页面视图控制器的视图中查找它的位置,并使用它来决定在哪里进行导航。您可能想要将决定委托给当前显示的视图控制器。

static UIPanGestureRecognizer *panRecognizerOfPageViewController(UIPageViewController *pageViewController) { 
    for (id recognizer in pageViewController.gestureRecognizers) { 
     if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]]) 
      return recognizer; 
    } 
    return nil; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
    viewControllerBeforeViewController:(UIViewController *)vc 
{ 
    DetailViewController *dvc = (DetailViewController *)vc; 
    UIPanGestureRecognizer *panner = panRecognizerOfPageViewController(pageViewController); 
    CGPoint point = [panner locationInView:dvc.view]; 
    return [dvc priorViewControllerWithPoint:point]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
    viewControllerAfterViewController:(UIViewController *)vc 
{ 
    DetailViewController *dvc = (DetailViewController *)vc; 
    UIPanGestureRecognizer *panner = panRecognizerOfPageViewController(pageViewController); 
    CGPoint point = [panner locationInView:dvc.view]; 
    return [dvc nextViewControllerWithPoint:point]; 
} 

在我的测试中,我只需要询问pan手势识别器的位置。当手势是平底锅时,两个识别器处于“可能”状态。当手势是轻击时,平移识别器处于“失败”状态,但它仍报告轻击接触的位置。

当然,这不是记录行为。如果你不想依赖它,你需要以其他方式访问当前触摸的位置。我可能只是使用UIWindow的子类并覆盖它的sendEvent:以将最近的触摸事件保存在实例变量中以便于访问。

+0

谢谢!我使用“基于页面的应用程序”模板,并将其粘贴到我的'RootViewController:UIViewController '中。它将自己设置为'viewDidLoad'中的委托:'self.pageViewController.delegate = self;'。但是'(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)vc'方法似乎不会在翻页时触发。任何指针? – 2013-03-26 19:06:06

+0

确保您的页面视图控制器的'dataSource'连接到实现'pageViewController:viewControllerAfterViewController:'的对象。 – 2013-03-26 21:34:02

+0

超级,它的作品! – 2013-03-27 07:09:36