Así que estoy notando todas mis opiniones están recibiendo el gesto de volver (pop con una vista) cuando el usuario pasa en el lado izquierdo de la pantalla (en cualquier orientación) (Esta es la nueva con iOS7)

Que he probado hasta ahora con ningún provecho para desactivarlo mediante:

    [self.navigationItem setHidesBackButton:YES];

Dentro de la inicialización de la NavigationController en sí (como el delegado parece a usar).

  • Ninguna de las respuestas trabajo para iOS 8
  • Véase mi respuesta a continuación.. funcionó para mí
InformationsquelleAutor Danoli3 | 2013-09-26

6 Comentarios

  1. 72

    obj-c

    self.navigationController.interactivePopGestureRecognizer.enabled = NO;

    swift

    navigationController?.interactivePopGestureRecognizer?.isEnabled = false
    • Yeah!! Que funciona. Sólo funciona a pesar de que en el AppDelegate después de crear el NavigationController aunque. He intentado en la inicialización y carga de la implementación de mi NavigationController sin éxito.
    • ¿qué significa probado en la inicialización y carga de la implementación de mi NavigationController?
    • En mi NavigationController (subclase de UINavigationController): este juzgado en el «- (id)initWithCoder:(NSCoder *)aDecoder {» Añadido: super.navigationController.interactivePopGestureRecognizer.enabled = YES; self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    • Me gustaría probar la aplicación de initWithNavigationBarClass:toolbarClass: y initWithRootViewController: que son los dos init métodos definidos por UINavigationController
    • No su trabajo en iOS 8 beta.
    • Por fin he encontrado tiempo para mirar en esto, y se me ocurrió una solución. Comprobar mi respuesta actualizada.
    • iOS8 DP4 también no funciona
    • Gracias por esta solución. Trabajos en oficial de iOS 8 como un encanto.
    • Esto no está funcionando, la línea: auto.navigationController.interactivePopGestureRecognizer.delegado = auto, vuelve con un error que no se ajustan al protocolo. Estoy suponiendo que el protocolo requiere que la función anterior, pero no resolver el error. Me voy a poner en viewDidLoad() en el vc necesito para deshabilitarlo.
    • Me fijo que el anterior, pero aún así no funciona, he UIGestureRecognizerDelegate en la clase de referencias. Tengo el auto.navigationController?.interactivePop… de la línea en el viewDidLoad (a), tengo la función hacia abajo en el cuerpo principal de la viewcontroller. No tengo errores, pero ¿qué estoy haciendo mal? Se necesita también un opcional de interrogación allí, como usted puede ver.
    • Funciona como un sueño en Xcode 6.1
    • parece enabled es ahora isEnabled

  2. 6

    Añadir a Gabriele de la Solución.

    Para apoyar cualquier iOS antes de iOS 7 tendrá que envolver este código con esto:

    if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.enabled = NO;
        }

    Esto detendrá la Aplicación de estrellarse en iOS 6 y iOS 5 que faltan selector.

  3. 5

    Puedo usar esta solución en mi proyecto, se desactiva sólo interactivePopGestureRecognizer y permite el uso de otro gesto de reconocedores.

    - (void)viewDidLoad {
    
        [super viewDidLoad];
    
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    
            self.navigationController.interactivePopGestureRecognizer.enabled = NO;
            self.navigationController.interactivePopGestureRecognizer.delegate = self;
    
        }
    
    }
    
    
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    
        if ([gestureRecognizer isEqual:self.navigationController.interactivePopGestureRecognizer]) {
    
            return NO;
    
        } else {
    
            return YES;
    
        }
    
    }
  4. 4

    Me enteré de establecer el gesto para minusválidos sólo no siempre funciona. No funciona, pero para mí es sólo lo hizo después de que yo, una vez utilizados los backgesture. Por segunda vez no iba a desencadenar la backgesture.

    Corrección para mí fue delegado el gesto y aplicar la shouldbegin método para NO volver:

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
    
        //Disable iOS 7 back gesture
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.enabled = NO;
            self.navigationController.interactivePopGestureRecognizer.delegate = self;
        }
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
    
        //Enable iOS 7 back gesture
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.enabled = YES;
            self.navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
    }
    
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        return NO;
    }
  5. 3

    Para IOS 8 (Swift):

    class MainNavigationController: UINavigationController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.interactivePopGestureRecognizer.enabled = false
    
            //Do any additional setup after loading the view.
        }
    
    }
    • No funciona aquí
    • mostrar algo de código. ¿Establece el NavigationController en la interfaz del generador de la costumbre de uno?
    • Sí, lo hice, todo está resuelto. Gracias.
  6. 0

    Utilizar este código para la anterior de iOS 7

    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here