recherche

Maison  >  Questions et réponses  >  le corps du texte

objective-c - Comment désactiver le geste pop de balayage latéral droit du contrôleur actuel? Actuellement, VC est poussé ici.

Par exemple : mon contrôleur au talon est un contrôleur de navigation, et maintenant il y a un contrôleur A sur lequel j'ai poussé. J'espère que ce contrôleur ne pourra apparaître qu'en cliquant sur le bouton de retour sur le côté gauche de la barre de navigation et en faisant glisser. juste sur le côté. J'espère désactiver le geste pop. Bien sûr, j’espère que les autres contrôleurs n’auront plus ce geste pop. S'il vous plaît dites-moi comment mettre en œuvre ce changement ?

習慣沉默習慣沉默2793 Il y a quelques jours585

répondre à tous(2)je répondrai

  • 高洛峰

    高洛峰2017-05-02 09:31:05

    Écrire dans le contrôleur A :

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
    
        self.navigationController.interactivePopGestureRecognizer.delegate = self;
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
    
        self.navigationController.interactivePopGestureRecognizer.delegate = nil;
    }
    
    // 给该控制器添加协议 <UIGestureRecognizerDelegate>
    
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        return gestureRecognizer != self.navigationController.interactivePopGestureRecognizer;
    }
    

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-02 09:31:05

    Construire de A -> B est plus élégant

    Dans la vueDidLoad de B

    self.navigationController.interactivePopGestureRecognizer.delegate = self;
    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
        [super pushViewController:viewController animated:animated];
        self.interactivePopGestureRecognizer.enabled = NO;
    }

    Puis à l'intérieur de viewDidDisparaître

    self.navigationController.interactivePopGestureRecognizer.enabled = YES;

    Tout est écrit en B, n'est-ce pas beaucoup plus élégant ?

    répondre
    0
  • Annulerrépondre