UIPageViewController以编程方式允许调用数据源

时间:2016-06-02 03:46:13

标签: ios objective-c uipageviewcontroller

我有一个显示UIPageViewController图像的Transition style scroll。我想要处理tappan手势,所以为了做到这一点,我做了一些小问题,将另一个view置于uipageviewcontroller之上并指定{{1} }和tap手势识别器。在这种情况下,当我向左或向右检测平移手势时,我使用pan来执行滑动。

我的问题是,在使用-setViewControllers:direction:animated:completion:时,数据源方法-setViewControllers:direction:animated:completion:viewControllerBeforeViewController不会被调用。委托方法viewControllerAfterViewController也不会被调用。

使用-pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:调用这些方法需要做些什么?

1 个答案:

答案 0 :(得分:2)

我认为你可以获得UIPageController的gesture recognisers,并使用它们来禁用或使用UIGestureRecogniser的方法启用UIPageController交互:

- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer

如果使用 setViewControllers ... ,则不会调用dataSource的方法,因为您已经提供了viewControllers。您还可以在此方法的完成块中处理出现的动画的完成。 (您可以调用dataSource的方法并自行委托)

<强> UPD

当我有相同的任务时,我实现了自定义页面视图(基于页面状态的UIScrollView),并使用scrollView的手势识别器来避免滚动,而在某些页面内识别平移手势。我无法记住为什么我实施了自定义控件,可能是因为我找不到同样问题的解决方案。我记得我的页面视图使用dataSource来获取页面的视图。我认为你可以用你的特殊逻辑实现自定义控制。