2017-02-01 61 views
0

我有一个UIViewController包含使用滚动样式的UIPageViewController。用户可以照常浏览页面。现在我想将两个手指UISwipeGestureRecognizer添加到包含页面视图控制器的外部视图控制器。我希望用户能够用一根手指轻扫来切换页面,并用两根手指轻扫来触发另一个动作。但默认情况下,当您用两根手指滑动时,iOS会滚动页面并忽略两个手指手势。为了解决这个问题,我设置了pageViewController.scrollView.panGestureRecognizer以要求双指滑动手势失败。然后,它会根据需要识别两者,但问题在于,它很难用一根手指快速滑过页面,因为它正在等待两根手指轻扫失败。它会忽略大量的滑动输入,因此在用一根手指轻扫切换页面之前,您必须先关闭并保持一会儿。我也尝试将平移手势的minimumNumberOfTouchesmaximumNumberOfTouches设置为1,但其行为相同。避免与双指滑动手势和UIPageViewController冲突

我该怎么做才能做到这一点,只有在用两根手指滑动时才能识别双指滑动,而不会延迟识别单指滑动来切换页面?

回答

0

首先,你需要确保UISwipeGestureRecognizerpanGestureRecognizer同时认识到使用UIGestureRecognizerDelegate

func gestureRecognizer(UIGestureRecognizer, shouldRecognizeSimultaneouslyWith: UIGestureRecognizer) { 
    return true 
} 

然后,当你的两个手指UISwipeGestureRecognizer的操作方法被调用时,手动复位panGestureRecognizer

pageViewController.scrollView.panGestureRecognizer.isEnabled = false 
pageViewController.scrollView.panGestureRecognizer.isEnabled = true