UIPageViewController 滑动和点击之间的不同行为
Posted
技术标签:
【中文标题】UIPageViewController 滑动和点击之间的不同行为【英文标题】:UIPageViewController different behavior between swipe and tap 【发布时间】:2012-02-07 10:29:35 【问题描述】:我在我的项目中遇到了 UIPageViewController
的奇怪行为。
我实现了viewControllerBeforeViewController
和viewControllerAfterViewController
方法,当我在PageViewController 中滑动手指时它们工作正常。
我还希望在用户点击 PageViewController 的左右区域时翻页,就像在 iBook 上发生的那样。
当用户点击其中一个角时,会调用正确的方法(viewControllerAfterViewController
或 viewControllerBeforeViewController
),并且当用户在页面之间滑动时,我会返回一个有效的 UIViewController
。
不幸的是,在点击手势之后,页面没有翻页,didFinishAnimating
方法也没有被调用。如果在点击后执行滑动手势,页面会随着卷曲动画翻动,但只调用 didFinishAnimating
委托方法。
很奇怪,不是吗? UIPageViewController
似乎已经加载了视图控制器,但在我执行滑动手势之前不会启动动画。
我的问题的一个可能解决方案是检测滑动和点击手势,在委托方法中什么都不做,并通过setViewControllers:direction:animated:completion
翻页。
检测手势对我来说不是问题,因为我已经在我的项目中这样做了,但我想了解为什么 UIPageViewController
会以如此奇怪的方式表现
谢谢!
【问题讨论】:
我找到了解决方案。我实现了gestureRecognizerShouldBegin,我将我的viewcontroller设置为我的PageViewController的TapGestureRecognizer的代表,我总是返回YES。现在我可以使用点击和滑动来浏览页面。 让它成为投票的答案!谢谢你! 【参考方案1】:这可能是一个相关的问题,但它非常相似,所以也许值得在这里提及。有时在设置 UIPageViewController 时,您会发现点击和滑动的反向手势(上一页)都有效,但向前手势(下一页)滑动有效但点击无效。
这通常是因为没有正确设置嵌套 UIPageViewController 的 UIViewController 的根 UIView 的边界。您需要记住明确设置这些边界,通常是设备的边界。例如在 iPad 上:
self.view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 768.0, 1024.0)] ;
【讨论】:
为您的问题添加标签,什么版本等会有帮助。以上是关于UIPageViewController 滑动和点击之间的不同行为的主要内容,如果未能解决你的问题,请参考以下文章
仅在 uiPageViewController 中禁用临时向前滑动
将删除滑动手势从 UIPageViewController 传递给 UITableView