Ho molti problemi a visualizzare un filmato a schermo intero nella mia app per iPad e quindi a consentire all'utente di chiuderlo con il pulsante Fine o "non-schermo intero" pulsante sui controlli del lettore.Visualizzazione corretta e rimozione di MPMoviePlayerController a schermo intero in iOS 3.2 (iPad)
Inizialmente stavo usando MPMoviePlayerViewController
per la presentazione del film, ma non ricevevo le notifiche di invio/uscita a schermo intero dal suo oggetto MPMoviePlayerController
, quindi sono passato a farlo da solo.
Posso rendere il filmato a schermo intero (anche se la transizione è janky), ma quando vengono premuti i pulsanti "Fatto" o "non-schermo intero", nessuna azione viene intrapresa dal giocatore. Ho inviato il mio codice qui sotto:
- (void)startPlayingMovieWithURLString:(NSString *)movieURLString {
// I get all of these callbacks **EXCEPT** the "willExitFullScreen:" callback.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
[self.moviePlayerController setContentURL:someExistingURL];
// "self" is a UIViewController subclass, and is presented as a "fullscreen" modal view controller from its parent
// I'm setting the movie player's view's frame to take up the full rectangle of my view controller, but really I want the movie to be completely removed when the user presses "done" (that is, removed from the view hierarchy). Not sure when/where to do this.
self.moviePlayerController.view.frame = self.view.frame;
[self.view addSubview:self.moviePlayerController.view];
[self.moviePlayerController setFullscreen:YES animated:YES];
}
Ed ecco il codice per il mio didFinish richiamata
- (void)didFinishPlayback:(NSNotification *)notification {
// This ends up recursively telling the player that playback ended, thus calling this method, thus…well you get the picture.
// What I'm trying to do here is just make the player go away and show my old UI again.
[self.moviePlayerController setFullscreen:NO animated:YES];
}
Così, ovviamente, sto facendo qualcosa di sbagliato, ma io sono stato su e giù per la documentazione e io non riesco a capire come fare il film basta andare via. Ho pensato che sarebbe stato più intuitivo di questo. Che cosa sto facendo di sbagliato?
Questo è utile e sono in grado di uscire a schermo intero ora quando l'utente preme fatto, tuttavia il -playbackFinished: la callback non viene mai eseguita per me e non posso per la vita di me capire perché no. Conosci qualche motivo per cui ciò potrebbe accadere? – jbrennan
Anche quando il film viene riprodotto fino alla fine? È strano, non l'ho mai visto. –
se MPMoviePlayerDidExitFullscreenNotification viene chiamato sia quando si tocca "Fatto", sia quando si esce a schermo intero, come si fa a sapere che viene chiamato? Forse l'utente esce solo a schermo intero, nel qual caso non si desidera rimuovere la vista, credo. –