【发布时间】:2019-07-19 06:39:41
【问题描述】:
使用 UIPageViewController 时,用户可以向右或向左滑动以创建跟随手指的动画翻页。或者用户可以简单地点击页面视图的一侧或另一侧来导致翻页。翻页动画完成后,会调用委托方法pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:方法。
我希望我的最终页面状态略有不同,具体取决于用户是通过滑动还是点击来翻页。但我无法找到一种可靠的方法来确定导致翻页的原因。 pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: 方法不提供该信息。
在我的 UIPageViewController 委托 (self) 中,调用了 gestureRecognizer:shouldReceiveTouch: 方法,但即使用户最终只使用一种或另一种手势,滑动(平移)和点击手势识别器也会调用它.代表手势方法在屏幕被触摸的那一刻被调用。所以这无济于事。
我在页面视图中添加了一组与触摸相关的拦截方法。对于touchesBegan:withEvent:,我重置了一个标志。对于touches:moved:,它不需要点击手势,我设置了标志。这种方法有效,但它的级别太低了,将来可能无法正常工作,因为它也可以移动,但不是滑动/平移。而且 UIPageViewController 的点击手势似乎完全吞噬了触摸事件,所以甚至没有调用 touchesBegan:withEvent:(这很奇怪)。
有什么方法可以可靠地区分 UIPageViewController 使用哪种翻页方式(点击或平移/滑动)来处理用户翻页的交互? p>
【问题讨论】:
标签: ios cocoa-touch uigesturerecognizer uipageviewcontroller