O AVAudio não para depois de apresentar o Modal View
-
29-10-2019 - |
Pergunta
Tenho um aplicativo que exibe filmes.A primeira tela mostra botões que apresentam diferentes visualizações modais.Dentro dessas visualizações modais estão botões que reproduzem vídeos.
Quero que o menu principal toque música (bastante fácil), mas quero que ele persista na segunda visualização modal, mas pare quando o vídeo começar a ser reproduzido.
Estou tentando [parar o audioPlayer] quando os botões dos filmes são pressionados, mas a música continua tocando.
Tentei parar e reproduzir o áudio em viewDidAppear e viewDidDisappear.Isso fez com que o áudio reiniciasse ao apresentar a segunda exibição e não fosse reproduzido durante o vídeo.
Espero que isso faça sentido, só preciso ter uma ideia de como fazer o áudio tocar o tempo todo (em duas ou três visualizações modais), exceto durante a reprodução do filme.
Este é meu método vewDidAppear
:
-(void)viewDidAppear:(BOOL)animated {
NSString *musicPath = [[NSBundle mainBundle] pathForResource: @"Intro Music" ofType:@"mp3"];
if(musicPath) {
NSURL *musicURL = [NSURL fileURLWithPath:musicPath];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
[musicURL release];
}
if(!audioPlayer.playing) {
[audioPlayer play]
}
}
Solução
Seu controlador de visualização modal está tentando parar um audioPlayer
que não existe dentro dele. O mainMenueViewController
tem o audioPlayer
, então ele deve ser o único a dizer ao reprodutor de áudio para parar.
Você pode usar NSNotifications para isso. Cada NSNotification é enviado por meio do singleton NSNotificationCenter . Aqui estão as etapas básicas para sua situação:
- Seu menu principal se registra para notificações quando está pronto.
- Seu menu principal tem métodos para chamar quando as notificações são disparadas.
- Seu submenu dispara um método quando precisa desligar o áudio.
- Seu menu principal cancela o registro quando está pronto para ser fechado.
Espero que isso ajude!