Tengo un AVPlayer que cargo en una nueva vista cada vez que se hace clic en un enlace.No se puede eliminar o detener AVPlayer
-(void)createAndConfigurePlayerWithURL:(NSURL *)movieURL sourceType:(MPMovieSourceType)sourceType {
self.playerItem = [AVPlayerItem playerItemWithURL:movieURL];
customControlOverlay = [[AFDetailViewController alloc] initWithNibName:@"AFMovieScrubControl" bundle:nil];
backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[customControlOverlay.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:customControlOverlay.view];
playerLayer = [AVPlayerLayer playerLayerWithPlayer:[AVPlayer playerWithPlayerItem:playerItem]];
[playerLayer.player play];
playerLayer.frame = customControlOverlay.view.frame;
[customControlOverlay.view.layer addSublayer:playerLayer];
}
El código anterior agrega el AVPlayer a mi aplicación y funciona bien. Tengo un botón en mi plum customControlOverlay que debería eliminar la vista y detener la reproducción de AVplayer.
-(IBAction)toggleQuality:(id)sender {
if (qualityToggle.selectedSegmentIndex == 0) {
NSLog(@"HD");
[playerLayer.player pause];
[self.view removeFromSuperview];
} else if (qualityToggle.selectedSegmentIndex == 1) {
NSLog(@"SD");
}
}
La vista se elimina correctamente pero el reproductor todavía se reproduce en segundo plano. Después de probar un poco, el jugador no responderá a ningún código en el método toggleQuality, pero las cadenas que tengo allí a medida que las verificaciones se van registrando.
¿Alguna idea de lo que estoy haciendo mal?
Utilice playerLayer.player = nil; antes de eliminar de la supervista –
El sonido sigue sonando incluso si lo hago. – AFraser
¿Qué pasa si haces eso en el otro orden (eliminar y luego establecer en cero)? – Squatch