Estoy tratando de configurar un reproductor de video muy simple. (IOS 5.1, Xcode 4.3.1)MPMoviePlayerController se detiene después de cuatro segundos
-(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];
}
Funciona bien cuando se le llama, pero sólo juega durante cuatro segundos, a continuación, aparece una pantalla en negro. Si toco la pantalla durante la reproducción, reproducirá toda la secuencia. Si dejo de tocar la pantalla durante cuatro segundos, aparece la pantalla negra.
¿Qué me falta?
Kurt
Versión editada juega bien.
En el archivo de interfaz:
@property (nonatomic,strong) MPMoviePlayerController *myMovieController;
En el archivo .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];
}
Estoy usando ARC, pero disculpe mi ignorancia. Si llamo a [moviePlayer retener], aparece un mensaje de error "ARC prohíbe el envío explícito de mensajes de 'retener'". Gracias por la rápida respuesta. – Kurt
Lo tengo. Como dijiste, asignaste una propiedad. Editaré la publicación. – Kurt
Buenas cosas, me alegro de que funcionó. No sé si hay otra manera más inteligente de retener en ARC, como dices que no puedes llamar retener explícitamente, pero la propiedad hace el trabajo. – davidfrancis