objective-c - Comment désactiver le geste pop de balayage latéral droit du contrôleur actuel? Actuellement, VC est poussé ici.
習慣沉默
習慣沉默 2017-05-02 09:29:05
0
2
594

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 ?

習慣沉默
習慣沉默

répondre à tous(2)
小葫芦

É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;
}
伊谢尔伦

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 ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal