使用双指轻扫手势和UIPageViewController避免冲突

时间:2017-02-01 23:05:16

标签: ios uigesturerecognizer uipageviewcontroller

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

我可以做些什么来使这项工作运作良好,只有在用两根手指滑动但不能延迟识别单指滑动以切换页面时才能识别出两根手指滑动?

1 个答案:

答案 0 :(得分:0)

首先,您需要确保UIGestureRecognizerDelegate使用func gestureRecognizer(UIGestureRecognizer, shouldRecognizeSimultaneouslyWith: UIGestureRecognizer) { return true } 同时识别UISwipeGestureRecognizer

panGestureRecognizer

然后,当您的双指pageViewController.scrollView.panGestureRecognizer.isEnabled = false pageViewController.scrollView.panGestureRecognizer.isEnabled = true 的操作方法被调用时,请手动重置header('Content-type: application/json');

echo json_encode($response);