So deaktivieren Sie die Zurückgeste in iOS 7 für nur eine Ansicht
Ich versuche, die Zurück-Geste für meinen View-Controller mithilfe des folgenden Codes zu deaktivieren.
ImFirstViewController.m
Ich setze den Delegierten voninteractivePopGestureRecognizer
- (void) viewWillLoad {
// Other stuff..
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
Und dann die Umsetzung der<UIGestureRecognizerDelegate>
Methode und RückkehrNO
.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return NO;
}
Und im Dealloc setze ich den Delegierten auf Null. (Ich habe irgendwo gelesen, dass man in iOS 7 die Delegierten manuell auf Null setzen muss.)
- (void)dealloc {
self.navigationController.delegate = nil;
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
Das funktioniert imFirstViewController
. Aber wenn ich drückeSecondViewController
dazu funktioniert die geste auch nicht. Wie kann ich die Geste nur in FirstViewController deaktivieren?
Auch wenn ich knalleFirstViewController
zu gehenRootViewController
und dann versuchen zu schiebenFirstViewController
wieder bekomme ich den Objektfreigabefehler:
[FirstViewController gestureRecognizer:shouldReceiveTouch:]: message sent to deallocated instance 0x14ed0280
Warum muss ich etwas anderes tun, als die Delegierten auf Null zu setzen? Oder stelle ich es falsch ein?