2015-10-19 2 views
0

J'ai ajouté 'interactivePopGestureRecognizer' dans un viewcontroller, et je donne aussi le bouton back sur la barre supérieure. Lorsque l'utilisateur utilise Pop Gesture et l'affichage push/pop à ce moment-là, il arrête la vue supérieure du contrôleur de navigation. Après un certain temps, il va planter avec "[hash viewcontroller]: message envoyé à l'instance libérée."interactivePopGestureRecognizer un certain temps freez view touch et il provoquera également [hash viewcontroller]: message envoyé à l'instance désallouée?

METHODE

-(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; 
} 

Je application de type TabBar.

Répondre

0

L'accident serait expliqué par vous ne en quelque sorte d'exécuter

self.navigationController.interactivePopGestureRecognizer.delegate = nil; 

dans viewDidDisappear. Pouvez-vous confirmer que votre délégué est réellement retiré en le parcourant dans le débogueur?

+0

Dans viewDidDisappear respondsToSelector n'est pas exécuté !! , Quand je mets ce code dans viewWillDisappear il sera exécuté mais pas navigué. –

+0

Peut-être essayer de le faire dans viewWillDisappear –

+0

La navigation viewWillDisappear ne fonctionne pas !! il va geler le viewcotroller. –