interactivePopGestureRecognizer некоторое время замораживает представление касания, и это также вызовет [хэш viewcontroller]: сообщение отправлено на освобожденный экземпляр?
Я добавил 'interactivePopGestureRecognizer' в некоторый viewcontroller, а также кнопку возврата на верхней панели. Когда пользователь использует Pop Gesture и push/pop view в это время, он замораживает верхнее представление контроллера навигации. Через некоторое время произойдет сбой с "[viewcontroller hash]: сообщение отправлено на освобожденный экземпляр".
МЕТОД
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
//Pop GESTURE
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = true;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
//Remove Pop Gesture
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = false;
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
}
DELEGATE METHOD
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
// add whatever logic you would otherwise have
return YES;
}
У меня есть приложение типа TabBar.
1 ответ
Сбой объясняется тем, что вы как-то не выполняете
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
в viewDidDisappear
, Можете ли вы подтвердить, что ваш делегат на самом деле удаляется, пройдя через него в отладчике?