Estoy tratando de agregar botones personalizados a la izquierda y derecha de los controles estándar rebobinar/reproducir/reenviar en una vista MPMoviePlayerController (OS 2.xy superior). He descubierto cómo agregarlos a la ventana del reproductor, pero siempre están visibles. ¿Hay alguna manera de detectar cuándo aparecen y desaparecen los controles estándar?¿Cómo detectar cuándo aparecen/desaparecen los controles de iPhone MPMoviePlayer?
Respuesta
Ok, lo tengo, haga así:
BOOL controlsVisible = NO;
for(id views in [[_moviePlayer view] subviews]){
for(id subViews in [views subviews]){
for (id controlView in [subViews subviews]){
controlsVisible = ([controlView alpha] <= 0.0) ? (NO) : (YES);
}
}
}
NSLog(@"player controls are visible: %d", controlsVisible);
Dónde _movePlayer es la instancia del reproductor. En el bucle más profundo, la instancia de vista MPFullScreenVideoOverlay tendrá alfa == 0.0 si los controles están ocultos, o alfa 1.0 si se muestran los controles. Puede agregar un observador y disparar cosas según sea necesario. Sé que no es elegante, pero funciona para mí, ya que Apple no ha documentado nada sobre esta tarea.
Saludos ... Responder
Mire en la propiedad movieControlMode. Puede configurar el MPMovieControlMode
MPMovieControlMode Opciones para mostrar los controles de reproducción de películas.
typedef enum {
MPMovieControlModeDefault,
MPMovieControlModeVolumeOnly,
MPMovieControlModeHidden
}
MPMovieControlMode;
También puede comprobar fuera de MPMoviePlayerScalingModeDidChangeNotification
Sé cómo activar los controles, lo que estoy buscando es una notificación cuando los controles aparecen y desaparecen (por ejemplo, cuando el usuario toca la pantalla). –
pre iOS3.2
para detectar "disapierance" es fácil:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];
para detectar appierance es poco más difícil (tal vez hay una mejor manera) :
...
[moviePlayerController play];
mainTimer = [NSTimer scheduledTimerWithTimeInterval:1/100 target:self selector:@selector(tick) userInfo:nil repeats:YES];
- (void)tick {
if([[[UIApplication sharedApplication] windows] count] < 2) return;
moviePlayerWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
if(moviePlayerWindow){
[mainTimer invalidate], mainTimer=nil;
// here you have moviePlayerWindow
}
}
Me refiero a los controles de jugador que aparecen en un HUD sobre la parte superior de la película. Aparecerán y desaparecerán mientras se está reproduciendo el movimiento (por ejemplo, cuando el usuario toca la película). –
de cybercow es correcto sólo tiene que añadir una pequeña modificación para hacer la respuesta más precisa.
BOOL controlsVisible = NO;
for(id views in [[self.moviePlayerViewController view] subviews])
{
for(id subViews in [views subviews])
{
for (id controlView in [subViews subviews])
{
if ([controlView isKindOfClass:[UIView class]] && ((UIView*)controlView).tag == 1004)
{
controlsVisible = ([controlView alpha] <= 0.0) ? (NO) : (YES)
}
}
}
}
cambié el bucle más interno. En realidad, 1004 es la etiqueta de los controles de MPMoviePlayer, por lo que funcionará con mayor precisión.
- 1. Botón X con círculo en los controles de iPhone
- 2. ¿Cómo habilitar el bloqueo automático de iPhone durante la reproducción de MPMoviePlayer?
- 3. Cómo detectar si Safari está deshabilitado en el iPhone
- 4. Cómo agregar un KVO a MPMoviePlayer currentPlaybackTime?
- 5. iPhone iOS: ¿cómo detectar cuándo está en roaming? (No para teléfonos jailbreaked)
- 6. cómo detectar cuándo ha finalizado MotionEvent.ACTION_MOVE
- 7. iOS: ¿Cómo detectar cuándo termina una animación?
- 8. MPMoviePlayer o AVPlayer Frame advance
- 9. iphone dev: cómo detectar excepción 'NSRangeException'
- 10. Superposición de MPMoviePlayer en modo de pantalla completa (iPad)
- 11. iPhone: ¿Cómo detectar si iTunes está jugando?
- 12. Cómo detectar el movimiento sacudida en iPhone
- 13. Cómo detectar iphone está en modo silencioso
- 14. ¿Cómo desarrollar controles de UI distribuibles para iPhone?
- 15. Detectar configuración de 24 horas de iPhone
- 16. ¿Cómo identificar cuándo cambió SIM en iPhone?
- 17. ¿Cómo funcionan los controles remotos de git?
- 18. iPhone: detectar dos dedos toque
- 19. ¿Cómo detectar cuándo cambia la altura de su página?
- 20. ¿Cómo puedo detectar cuándo sale un subproceso de cliente?
- 21. ¿Cómo detectar cuándo se inicia la reproducción de VideoView (Android)?
- 22. Cómo insertar los mejores controles acoplados debajo de los controles acoplados superiores previewsly en un panel
- 23. iPhone - detectar dispositivos bluetooth cercanos
- 24. Los controles de contenido deben ser controles de nivel superior
- 25. Detectar botón de volumen del iPhone Arriba ¿Presiona?
- 26. ¿Cómo detectar cuándo se cambia el tema en WP7?
- 27. Cómo detectar cuándo un usuario toca una vista en Android
- 28. ¿Cómo detectar la resolución de textura máxima en iPhone?
- 29. cómo detectar redireccionamientos de url al cargar UIWebView en iphone?
- 30. Cómo utilizar los controles telerik en asp.net
como su enfoque ... !! y +1 para este – Kamarshad
no funciona cuando 3G está habilitado – hariszaman