Pregunta

Esta es divertida ... tengo una aplicación que tiene una pantalla de ayuda y se muestra como una vista modal. La vista principal tiene una acción que ocurre cuando el dispositivo se agita. No quiero que se produzca la acción (se reproducen los sonidos) cuando se ha mostrado la pantalla de ayuda.

He probado algunas cosas ... aquí está mi código:

Para mostrar la pantalla de ayuda:

- (IBAction)helpButtonPressed:(id) sender {
    helpViewController = [[HelpViewController alloc] init]; 
    [self presentModalViewController:helpViewController animated:YES];
}

Para lanzar la pantalla de ayuda:

- (IBAction)buttonPressed:(id) sender {
    [self dismissModalViewControllerAnimated:YES];
}

Intenté lo siguiente sin éxito:

if ([helpViewController.view isHidden ]) {
    NSLog(@"Shake -- helpView is loaded");
} else {
    NSLog(@"Shake -- helpView is not loaded");
}


if ([helpViewController isViewLoaded]) {
    NSLog(@"Shake -- helpView is loaded");
} else {
    NSLog(@"Shake -- helpView is not loaded");
}

if ([self isViewLoaded]) {
    NSLog(@"Shake -- helpView is loaded");
} else {
    NSLog(@"Shake -- helpView is not loaded");
}

Lo que estaba pensando es que si hay una función que me permita detectar si se muestra la vista de ayuda, volveré sin reproducir los sonidos cuando el dispositivo sea sacudido ...

¿Algunas ideas?

¿Fue útil?

Solución

Supongo que el controlador de vista que carga el controlador modal también es el controlador de vista que responde a la acción de batir. Si ese es el caso, puede usar el controlador de vista principal modalViewController propiedad para ver si el controlador modal está activo:

if(self.modalViewController != nil) {
    // Modal view controller is active; do nothing
    NSLog(@"Shake -- helpView is loaded");
    return;
} else {
    // No modal view controller; take action
    NSLog(@"Shake -- helpView is not loaded");
    [self performSomeAction];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top