2009-02-17 12 views
5

Así que no puedo encontrar ninguna documentación sobre cómo hacer esto, tal vez alguien sepa qué está pasando aquí.iPhone UIWebView reproduciendo MP3. Protocolo de despido?

estoy en un UITableView (con un UINavigationController) en mi solicitud, y el lanzamiento de un UIWebView que carga un archivo mp3 en Internet empujando controlador de la red de Vista en la pila del mando de navegación. Esto funciona muy bien, el archivo se inicia y se reproduce en el reproductor quicktime que utiliza Safari.

El problema es que una vez que el archivo de audio se termina de reproducir, o el usuario hace clic en el botón hecho, el reproductor se libera y la aplicación vuelve a una vista web vacía con la barra de navegación. Puedo presionar el botón Atrás para volver a mi UITableView original, pero esa pantalla en blanco es fea y debe irse.

Entonces, ¿qué acción puedo usar para poner un mensaje [webviewcontroller.navigationcontroller popviewcontroller]? ¿Está cargando una instancia de alguna otra clase (como AVAudioPlayer) para reproducir el audio? ¿Necesito subclasificar algo? La documentación de Apple sobre cómo reproduce audio en UIWebView es básicamente inexistente.

Respuesta

1

Usted puede fingir por tener algunos javascript cambio location.href y, a continuación, hacer algo como esto:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 
     navigationType:(UIWebViewNavigationType)navigationType { 

    NSString* path=[[request URL] relativePath]; 
    BOOL shouldContinue=YES; 

    if ([path isEqualToString:@"/_my_custom_link"]) 
    { 
     shouldContinue=NO; 
     // do magical stuff 
    } 
    return shouldContinue; 
} 

Si eso no funciona, siempre se puede sondear él haciendo una

stringByEvaluatingJavaScriptFromString 
+0

Whoa, no estoy seguro de si eso es lo que estaba pidiendo. Cuando el mp3 termina de reproducirse, parece desencadenar el mismo evento que hacer clic en el botón "se hace", que llevan al usuario a una vista web en blanco. Lo que quiero hacer es sacar el controlador de vista de la pila cuando están a punto de llegar a esta página. –

+0

Sí, es un truco pero básicamente a través de javascript deberías poder activar algo en un temporizador o evento que cambie la ubicación, luego escucha ese "evento" en el delegado y pop – slf

5

Ok, así que encontré una solución mucho mejor, mucho más simple; uno que tuve que eliminar líneas de código de mi aplicación para usar. Acabo de utilizar UIWebview initWithFrame: CGRectMake (0.0,0.0,1.0,1.0), no lo agregué a la vista, llamé NSURLRequest y lo conecté a mi botón. El reproductor multimedia se vuelve automático y automágicamente, y no es necesario llamar al controlador de navegación.

+0

buen truco, me alegra oírte lo arregló – slf

+1

Este consejo fue útil, aunque en el simulador iOS 6.1 tuve que agregarlo a la vista para que funcione. [self.view addSubview: self.webView]; – DenVog

1

Esto podría salvar a alguien una o dos horas: el UIWebView se comporta de manera diferente en el dispositivo y en el simulador (circa iOS 4.1).

Acabo de pasar un tiempo tratando de descartar la vista web en el simulador, pero estaba trabajando en el dispositivo todo el tiempo.

Cuestiones relacionadas