Jak wyłączyć gest cofania w iOS 7 tylko dla jednego widoku
Próbuję wyłączyć gest cofania dla mojego kontrolera widoku za pomocą następującego zestawu kodu.
WFirstViewController.m
, Ustawiam delegatainteractivePopGestureRecognizer
- (void) viewWillLoad {
// Other stuff..
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
A następnie wdrożenie<UIGestureRecognizerDelegate>
metoda i powrótNO
.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return NO;
}
W dealloc ustawiam delegata na zero. (Czytałem gdzieś, że w iOS 7, musisz ręcznie ustawić delegatów na zero)
- (void)dealloc {
self.navigationController.delegate = nil;
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
To działa wFirstViewController
. Ale kiedy pchamSecondViewController
do tego gest nie działa na tym. Jak mogę wyłączyć ten gest tylko w FirstViewController?
Także kiedy popFirstViewController
iść doRootViewController
a następnie spróbuj nacisnąćFirstViewController
ponownie otrzymuję błąd zwolnienia obiektu:
[FirstViewController gestureRecognizer:shouldReceiveTouch:]: message sent to deallocated instance 0x14ed0280
Dlaczego jeszcze muszę zrobić coś innego niż ustawienie delegatów na zero? A może ustawiam go w niewłaściwym miejscu?