次のコード セットを使用して、View Controller の戻るジェスチャを無効にしようとしています。
ではFirstViewController.m、デリゲートを設定していますinteractivePopGestureRecognizer
- (void) viewWillLoad {
// Other stuff..
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
そして、<UIGestureRecognizerDelegate>メソッドを実装して返しNOます。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return NO;
}
そして、dealloc ではデリゲートを nil に設定しています。(iOS 7 ではデリゲートを手動で nil に設定する必要があることをどこかで読んだことがあります)
- (void)dealloc {
self.navigationController.delegate = nil;
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
これは で機能しFirstViewControllerます。しかし、SecondViewControllerこれにプッシュすると、ジェスチャも機能しません。FirstViewController のみでジェスチャを無効にするにはどうすればよいですか?
また、ポップFirstViewControllerしてから再度RootViewControllerプッシュしようとするとFirstViewController、オブジェクトの割り当て解除エラーが発生します。
[FirstViewController gestureRecognizer:shouldReceiveTouch:]: message sent to deallocated instance 0x14ed0280
デリゲートを nil に設定する以外に、他に何をする必要があるのでしょうか? それとも、間違った場所に設定していますか?