Posted at

UIPageControllerで一部のGestureのみを無効にする方法

More than 3 years have passed since last update.

UIPageControllerは、page curlモードだと、デフォルトでは


  • 画面の左右端タップでページめくり

  • 画面を左右スワイプでページめくり

の2つのgestureRecognizerを持っている。

pageViewController.gestureRecognizers

で取得できるので、型判別して、それぞれを無効化することが出来る。


サンプルコード

class HogeViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
let pageVC = //pageViewControllerを取得してきます

// tapによるページめくりを担当するインスタンスを取得 
let tapGestureRecognizer = pageViewController.gestureRecognizers.filter{ $0 is UITapGestureRecognizer }.first as! UITapGestureRecognizer

// swipeによるページめくりを担当するインスタンスを取得 
let panGestureRecognizer = pageViewController.gestureRecognizers.filter{ $0 is UIPanGestureRecognizer }.first as! UIPanGestureRecognizer

// 例 swipeによるページめくりは有効、tapによるページめくりは無効
tapGestureRecognizer.enabled = false
panGestureRecognizer.enabled = true
}
}