gpt4 book ai didi

ios - UIScrollView 取消 UIPageViewController 滚动时的手势

转载 作者:可可西里 更新时间:2023-11-01 06:16:21 25 4
gpt4 key购买 nike

我有一个 UIPageViewController 来处理我的“书”的翻页。然而,每个书页都是一个 ViewController 和一个 UIScrollView 作为 subview。由于 contentSizeUIScrollView 只能垂直滚动。问题是,当用户垂直滚动 scrollview 时,由于 scrollview 仍在滚动/减速,用户无法翻页。查看此内容的一种非常简单的方法是滚动页面,然后尝试点击 View 的边缘。这通常会更改页面,并且当 scrollview 不移动时它确实会更改页面。但是,当它移动时,点击会导致 ScrollView 停止移动而不是翻页。

如果 UIPageViewController 尝试使用手势翻页,通过点击或平移页面来引起翻页动画,如何取消 scrollviews 手势?

有关我想要实现的行为的示例,请查看 iPhone 上的 Twitter 官方客户端。当提要仍在因滚动而减速时,可以从时间轴滑动到发现。

最佳答案

UIScrollView 滚动事件将阻止其他 UIView 动画,因此在 Twitter 的情况下,他们可能会在滑动 View 之前瞬间取消滚动。正如您在问题中所问:

“如果 UIPageViewController 尝试使用手势通过点击或平移页面来翻页以引起翻页动画,我该如何取消 ScrollView 手势?”

我会建议一个解决方法。

不要依赖于 UIPageViewController 固有的 UIPanGestureRecognizer,而是在页面 View 中包含您自己的 UIPanGestureRecognizer,以便在检测到平移时在页面的适当部分并以适当的方向执行,新的 UIPanGestureRecognizer 会覆盖 UIPageViewControllerUIGestureRecognizer 并触发必要的操作.具体来说,您需要:

(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;

以便在一个流畅的平移手势内停止滚动动画并完成翻页。

关于ios - UIScrollView 取消 UIPageViewController 滚动时的手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com