Sto provando a configurare un video player molto semplice. (IOS 5.1, Xcode 4.3.1)MPMoviePlayerController si arresta dopo quattro secondi
-(void)playMedia {
NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]];
[moviePlayer prepareToPlay];
moviePlayer.view.frame = self.view.bounds;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
moviePlayer.movieSourceType = MPMovieSourceTypeFile;
moviePlayer.fullscreen = YES;
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
[self.view addSubview: moviePlayer.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playMediaFinished:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
[moviePlayer play];
}
Funziona bene quando viene chiamato, ma gioca solo per quattro secondi, quindi viene visualizzata una schermata nera. Se tocco lo schermo durante la riproduzione, riprodurrà l'intera sequenza. Se smetto di toccare lo schermo per quattro secondi, appare la schermata nera.
Cosa mi manca?
Kurt
versione modificata gioca bene.
Nel file di interfaccia:
@property (nonatomic,strong) MPMoviePlayerController *myMovieController;
Nel file .m:
-(void)playMedia {
NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]];
[moviePlayer prepareToPlay];
moviePlayer.view.frame = self.view.bounds;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
moviePlayer.movieSourceType = MPMovieSourceTypeFile;
moviePlayer.fullscreen = YES;
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
self.myMovieController = moviePlayer;
[self.view addSubview: self.myMovieController.view];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playMediaFinished:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
[self.myMovieController play];
}
Sto usando ARC, ma perdona la mia ignoranza. Se chiamo [moviePlayer retain], viene visualizzato un messaggio di errore "ARC proibisce l'invio esplicito di" retain "dei messaggi. Grazie per la risposta rapida. – Kurt
Capito. Come hai detto, hai assegnato una proprietà. Modifico il post – Kurt
Roba buona, felice che funzionasse. Non so se c'è un altro modo più intelligente per fare il mantenimento in ARC, come dici tu non puoi chiamare keep in modo esplicito, ma la proprietà fa il lavoro. – davidfrancis