restricciones parental olvide eliminar control como codigo activar iphone mpmovieplayercontroller

iphone - parental - ¿Cómo ocultar el control antes de que se reproduzca la película MPMoviePlayerController?



restricciones ios 12 (3)

Utilice una devolución de llamada en lugar de un temporizador:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hidecontrol) name:MPMoviePlayerLoadStateDidChangeNotification object:playerView.moviePlayer];

Con función de devolución de llamada:

- (void) hidecontrol { [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:playerView.moviePlayer]; [playerView.moviePlayer setControlStyle:MPMovieControlStyleFullscreen]; }

Supongamos iOS 3.2 o posterior. ¿Cuál es la secuencia correcta de comando para ejecutar un movimiento con los controles inicialmente ocultos? Cuando la película se está reproduciendo, el usuario tiene la opción de etiquetar en la pantalla y mostrar los controles.

¡Gracias!

Mi código (control no oculto):

- (void)playMovie { NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Test" ofType:@"m4v"]]; MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; // Register to receive a notification when the movie has finished playing. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieDone:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieState:) name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:moviePlayer]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieReady:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:moviePlayer]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:moviePlayer]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer]; if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) { moviePlayer.controlStyle = MPMovieControlStyleDefault; // MPMovieControlStyleNone MPMovieControlStyleEmbedded MPMovieControlStyleFullscreen MPMovieControlStyleDefault moviePlayer.scalingMode = MPMovieScalingModeAspectFill; // MPMovieScalingModeAspectFit MPMovieScalingModeAspectFill } } - (void) movieReady:(NSNotification*)notification { MPMoviePlayerController *moviePlayer = [notification object]; if ([moviePlayer loadState] != MPMovieLoadStateUnknown) { // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; // When tapping movie, status bar will appear, it shows up // in portrait mode by default. Set orientation to landscape [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO]; [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; // Add movie player as subview [[self view] addSubview:[moviePlayer view]]; // Play the movie [moviePlayer play]; [moviePlayer setFullscreen:YES animated:YES]; } }


[Actualización] Según lo propuesto por @ReinYem, una solución mucho mejor es confiar en un MPMoviePlayerLoadStateDidChangeNotification en lugar de un temporizador.

En realidad, la siguiente solución no debería ser considerada más:

Establezca inicialmente la propiedad controlStyle en MPMovieControlStyleNone , y luego MPMovieControlStyleFullscreen en MPMovieControlStyleFullscreen un segundo más tarde con un [performSelector:withObject:afterDelay:1] . Funciona bien, los controles no aparecen hasta que el usuario toca el video.


player.moviePlayer.controlStyle = MPMovieControlStyleNone;

Es la nueva forma de hacerlo. :)