search
LoginSignup
6

More than 5 years have passed since last update.

posted at

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

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
    }
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6