Ho un AVPlayer che ho caricare su una nuova visione ogni volta che si fa clic su un link.non possono rimuovere o arrestare 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];
}
Il codice di cui sopra aggiunge l'AVPlayer alla mia app e funziona bene. Ho un interruttore nel mio pennino CustomControlOverlay che dovrebbe rimuovere la vista e interrompere la riproduzione di 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 viene rimossa correttamente ma il lettore continua a giocare in background. Dopo aver provato un po ', il giocatore non risponderà a nessun codice nel metodo toggleQuality ma le stringhe che ho lì come controlli verranno registrate.
Ogni pensiero su quello che sto facendo di sbagliato?
Usa playerLayer.player = nil; prima di rimuovere dal superview –
Il suono continua a suonare anche se lo faccio. – AFraser
Cosa succede se lo si fa nell'altro ordine (rimuovere e quindi impostare su zero)? – Squatch