Detectar quando a visão modal foi exibida
-
12-09-2019 - |
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?
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];
}