Pergunta

Isso é divertido ... eu tenho um aplicativo que possui uma tela de ajuda e é exibido como uma visualização modal. A visão principal tem uma ação que ocorre quando o dispositivo é abalado. Não quero que a ação ocorra (os sons são reproduzidos) quando a tela de ajuda foi exibida.

Eu tentei algumas coisas ... aqui está o meu código:

Para exibir a tela de ajuda:

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

Para liberar a tela de ajuda:

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

Eu tentei o seguinte sem sucesso:

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");
}

O que eu estava pensando é que, se houver uma função para me permitir detectar se a visualização de ajuda está aparecendo, voltarei sem tocar os sons quando o dispositivo for abalado ....

Alguma ideia?

Foi útil?

Solução

Suponho que o controlador de exibição que carregue o controlador modal também seja o controlador de exibição que responde à ação do Shake. Se for esse o caso, você pode usar o controlador de visualização pai modalViewController propriedade para ver se o controlador modal está ativo:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top