SwiftでUINavigationControllerのスワイプで戻る機能の有効・無効を切り替える

エッジスワイプジェスチャーというらしい








UIPageViewController などを使っていて切りたいとか、通信中は戻れないようにしたいとかいうときに使用する


以下は特定の画面のみ無効化することを想定したコード

/* ページビューはスワイプする動作が被ってしまうので無効化した方が使いやすいはず */
class CustomPageViewVC: UIPageViewController,
 UIPageViewControllerDataSource, 
 UINavigationControllerDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        // 初期化コードいろいろ
        
        // エッジスワイプジェスチャー禁止
        self.navigationController!.interactivePopGestureRecognizer!.enabled = false
    }
    
    
    /** 画面が破棄される直前に呼ばれる */
    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        // エッジスワイプジェスチャー有効化
        self.navigationController!.interactivePopGestureRecognizer!.enabled = true
    }
    
}



ただ一つ気になる記事が
http://qiita.com/hikaruna/items/8289b40b58f7f6e32a7a
iOS8 では動かないんだっけ?
問題なかった気がするんだけど(ひょっとして呼び出しタイミングの問題?)
まあiOS9 では動くので気にすることはないかな


2016年8月24日水曜日