2017-02-01 78 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