2012-07-19 9 views
6

Solo quiero saber si es posible recibir una notificación cuando el control de reproducción se vuelve visible u oculto?¿Notificación cuando el control del reproductor de películas se vuelve visible/oculto?

Por ejemplo, quiero presentar un video con el estilo:

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded; 

Cuando el vídeo comienza a reproducirse, los controles de reproducción obtiene automáticamente visible y desaparece. Si el usuario acaba de tabular en el video, aparecen los controles.

necesito una notificación para que pueda ajustar mi vista (reposicionar algunos botones adicionales bajo el punto de vista MPMoviePlayerController. ¿Es posible? Porque por desgracia no he encontrado nada en la documentación.

Respuesta

5

Me temo que no hay documentado notificaciones de esos eventos

puede tener suerte y encontrar algo oliendo todas las notificaciones publicadas como en las siguientes respuestas:.

Trapping and tracing all notifications

Sin embargo

How to receive NSNotifications from UIWebView embedded YouTube video playback


No es una forma de vincular simplemente sus controles con los de MPMoviePlayerControler 's. De esa manera definitivamente no está documentado y conlleva un gran riesgo de ser rechazado cuando intenta vender su aplicación en iTunes.

En primer lugar, debe ubicar la vista de interfaz dentro de MPMoviePlayerController, que hasta el día de hoy está representada por una clase llamada MPInlineVideoOverlay al usar la interfaz integrada. Una vez más, tenga en cuenta que esto conlleva una gran oportunidad o ruptura ya que Apple puede decidir cualquier día utilizar un nombre diferente.

/** 
* This quirky hack tried to locate the interface view within the supposingly opaque MPMoviePlayerController 
* view hierachy. 
* @note This has a fat chance of breaking and/or getting rejected by Apple 
* 
* @return interface view reference or nil if none was found 
*/ 
- (UIView *)interfaceViewWithPlayer:(MPMoviePlayerController *)player 
{ 
    for (UIView *views in [player.view subviews]) 
    { 
     for (UIView *subViews in [views subviews]) 
     { 
      for (UIView *controlView in [subViews subviews]) 
      { 
       if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) 
       { 
        return controlView; 
       } 
      } 
     } 
    } 
    return nil; 
} 

Si vuelve a visualizar correctamente, que acaba de añadir sus propias adiciones a la interfaz en la que de ella usando UIView addSubview: Una vez que hayas hecho eso, los controles serán parte de la interfaz del jugador, se muestra y se oculta bien juntos con él (también se adhiere a todas las animaciones, etc.).

+1

Sidenote explicando el mencionado riesgo de rechazo: utilicé este truco exacto en un importante lanzamiento de la aplicación y pasó inadvertido ... – Till

Cuestiones relacionadas