我有一个UIPageViewController
它负责翻我的“书”的页面。然而,每一本书的页面都是一个ViewController
with a UIScrollView
as a subview
. The UIScrollView
只能垂直滚动,因为contentSize
。问题是当用户滚动时scrollview
垂直方向上,如scrollview
仍在滚动/减速,用户无法翻页。查看此情况的一个非常简单的方法是滚动页面,然后尝试点击视图的边缘。这通常会更改页面,并且当scrollview
没有动。然而,当它移动时,点击会导致滚动视图停止移动而不是翻页。
我该如何取消scrollviews
手势,如果UIPageViewController
是否尝试使用手势翻页,通过点击或平移页面来引发翻页动画?
有关我想要实现的行为的示例,请查看 Twitter 在 iPhone 上的官方客户端。
当提要仍在因滚动而减速时,可以从时间轴滑动到发现。
A UIScrollView
滚动事件会阻止其他事件UIView
动画,所以就 Twitter 而言,他们可能会在滑动视图之前取消滚动。正如您在问题中所问的:
“如果 UIPageViewController 尝试通过点击或平移页面来使用手势翻页以引发翻页动画,如何取消滚动视图手势?”
我会建议一个解决方法。
而不是依赖于UIPageViewController
其固有的UIPanGestureRecognizer
,包括你自己的UIPanGestureRecognizer
在页面视图中,以便当在页面的适当部分检测到平移并在适当的方向上执行平移时,新的UIPanGestureRecognizer
覆盖UIPageViewController
's UIGestureRecognizer
s 并触发必要的操作。具体来说,您需要:
(1) 使用停止滚动动画
CGPoint offset = scrollView.contentOffset;
[scrollView setContentOffset:offset animated:NO];
(2) 使用编程方式翻页
- (void)setViewControllers:(NSArray *)viewControllers direction:
(UIPageViewControllerNavigationDirection)direction animated:
(BOOL)animated completion:(void (^)(BOOL finished))completion;
这样滚动动画就会停止,翻页也可以在一个流畅的平移手势内完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)