我在项目中遇到UIPageViewController
的奇怪行为。
我实现了viewControllerBeforeViewController
和viewControllerAfterViewController
方法,当我在PageViewController中滑动手指时,它们工作正常。
当用户点击PageViewController的左右区域时,我也想要翻页,就像在iBook上一样。
当用户点击其中一个角时,会调用正确的方法(viewControllerAfterViewController
或viewControllerBeforeViewController
),并且当用户在用户之间滑动时返回有效的UIViewController
页面。
不幸的是,在点击手势后,页面未被转动,并且未调用didFinishAnimating
方法。如果在点击后,我执行滑动手势,页面将使用curl动画,但仅调用didFinishAnimating
委托方法。
很奇怪,不是吗?似乎UIPageViewController
已加载了视图控制器,但在我执行滑动手势之前不会启动动画。
我的问题的一个可能的解决方案是检测滑动和点击手势,在委托方法中不执行任何操作并通过setViewControllers:direction:animated:completion
翻页。
由于我已经在我的项目中执行此操作,因此检测手势不是问题,但我想了解为什么UIPageViewController
以如此奇怪的方式表现
谢谢!
答案 0 :(得分:0)
这可能是一个相关问题,但它非常相似,所以这里值得一提。有时在设置UIPageViewController时,您会发现点击和滑动的反向手势(上一页)都有效,但是使用前向手势(下一页),滑动有效,但无法点击。
这通常是因为未正确设置UIVageViewController嵌套的UIViewController的根UIView的边界。您需要记住明确设置这些边界,通常是设备的边界。例如在iPad上:
self.view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 768.0, 1024.0)] ;