MPMoviePlayerController agregando UIButton para ver que se desvanece con los controles

stoy tratando de agregar un UIButton a la vista de un MPMoviePlayerController junto con los controles estándar. El botón aparece sobre el video y funciona como se esperaba al recibir eventos táctiles, pero me gustaría que se desvaneciera con los controles estándar en respuesta a los toques del usuario.

Sé que podría lograr esto haciendo rodar mis propios controles de reproductor personalizados, pero parece una tontería ya que solo estoy tratando de agregar un botón.

EDITA

Si recorre recursivamente la jerarquía de vistas de la MPMoviePlayerControllera vista de @ eventualmente llegará a una clase de vista llamada MPInlineVideoOverlay. Puede agregar controles adicionales fácilmente a esta vista para lograr el comportamiento de entrada / salida de desvanecimiento automático.

in embargo, hay algunas trampas, a veces puede tomar un tiempo (hasta un segundo en mi experiencia) después de haber creado la MPMoviePlayerController y lo agregó a una vista antes de que se haya inicializado completamente y creado su MPInlineVideoOverlay capa. Debido a esto, tuve que crear una variable de instancia llamada controlView en el siguiente código porque a veces no existe cuando se ejecuta este código. Es por eso que tengo el último bit de código donde la función se llama a sí misma nuevamente en 0.1 segundos si no se encuentra. No pude notar ningún retraso en el botón que aparece en mi interfaz a pesar de este retraso.

-(void)setupAdditionalControls {
    //Call after you have initialized your MPMoviePlayerController (probably viewDidLoad)
    controlView = nil;
    [self recursiveViewTraversal:movie.view counter:0];

    //check to see if we found it, if we didn't we need to do it again in 0.1 seconds
    if(controlView) {
            UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
            [controlView addSubview:backButton];
    } else {
            [self performSelector:@selector(setupAdditionalControls) withObject:nil afterDelay:0.1];
    }
}


-(void)recursiveViewTraversal:(UIView*)view counter:(int)counter {
    NSLog(@"Depth %d - %@", counter, view); //For debug
    if([view isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) {
            //Add any additional controls you want to have fade with the standard controls here
            controlView = view;
    } else {
            for(UIView *child in [view subviews]) {
                    [self recursiveViewTraversal:child counter:counter+1];
            }
    }
}

No es la mejor solución, pero la estoy publicando en caso de que alguien más esté tratando de hacer lo mismo. Si Apple cambiara la estructura de la vista o los nombres de clase internos a la superposición de control, se rompería. También estoy asumiendo que no estás reproduciendo el video a pantalla completa (aunque puedes reproducirlo a pantalla completa con controles integrados). También tuve que desactivar el botón de pantalla completa utilizando la técnica descrita aquí porque la MPInlineVideoOverlay view se elimina y se libera cuando se presiona:iPad MPMoviePlayerController - Deshabilitar pantalla completa

Calling setupAdditionalControls cuando reciba las notificaciones de pantalla completa descritas anteriormente, volverá a agregar sus controles adicionales a la IU.

Me encantaría una solución más elegante si alguien puede sugerir algo más que esta piratería que se me ocurrió.

Respuestas a la pregunta(1)

Su respuesta a la pregunta