Tengo un pequeño problema interesante con mi aplicación de iPhone. Tengo una vista con una tabla y cada celda, cuando hace clic, reproduce un video de pantalla completa y luego cuando presiona listo, el video se detiene y vuelve a la vista de tabla. El único problema es que cuando presiona dentro de los primeros 2 o 3 segundos de la carga de video, cuando la vista vuelve a la vista de tabla, la barra en la parte superior de la pantalla que indica el tiempo y la carga de la batería, etc., ya no está allí, es solo un espacio en blanco. Pero si presiona listo después de los primeros segundos, cuando vuelve a la vista de tabla, ¡todo está absolutamente bien! No tengo absolutamente ninguna idea de por qué esto está ocurriendo y lo único que he encontrado en Internet es esto lo que es un tipo con casi exactamente el mismo problema que yo:Desaparece la barra de estado en la parte superior después de cerrar MPMoviePlayerController
http://www.iphonedevsdk.com/forum/iphone-sdk-development/53020-disappearing-status-bar.html
Esto me lleva a tratar de usar:
[UIApplication sharedApplication].statusBarHidden = NO;
Sin embargo, esto no conduce a ninguna parte tampoco.
El código que se ejecuta al hacer clic en un vídeo:
NSString *path = [[NSBundle mainBundle] pathForResource:currentTitle ofType:@"m4v"];
NSURL *url = [NSURL fileURLWithPath:path];
movieController = [[MPMoviePlayerController alloc] initWithContentURL:url];
[movieController setControlStyle:MPMovieControlStyleFullscreen];
[movieController setFullscreen:YES];
movieController.view.frame = self.view.bounds;
[self.view addSubview:movieController.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
Y el código que se ejecuta ya sea cuando el vídeo se lleva a cabo o cuando el usuario hace clic hecho es:
NSLog(@"movieController moviePlayBackDidFinish");
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
[movieController setFullscreen:NO animated:NO];
[movieController.view removeFromSuperview];
[movieController release];
LiveEventsView *liveEventsView = [[LiveEventsView alloc] initWithNibName:@"LiveEventsView" bundle:nil];
UIView *currentView = self.view;
UIView *theWindow = [currentView superview];
UIView *newView = liveEventsView.view;
newView.frame = CGRectMake(0, 20, 320, 460);
[currentView removeFromSuperview];
[theWindow addSubview:newView];
[UIApplication sharedApplication].statusBarHidden = NO;
Si cualquiera puede arrojar algo de luz sobre esta situación, estaría muy agradecido ya que es extremadamente frustrante.
Gracias,
Matt
Gracias, esto funciona, pero el tiempo más corto que parece retrasar con éxito es de 1 segundo, que es un poco demasiado largo. Si es la única forma en que puedo arreglarlo, entonces lo hará, pero preferiblemente solo aparecerá tan pronto como se cargue la vista, en lugar de 1 segundo después –