次のコード セットを使用して、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 に設定する以外に、他に何をする必要があるのでしょうか? それとも、間違った場所に設定していますか?