2012-06-06 5 views
19

Necesito limpiar el contenido de UIWebView (para reutilizarlo), pero tengo algún código de manejo de autenticación en sus métodos de delegado, así que no quiero cargar una página vacía como about: en blanco para limpiarla, ya que activará mi código de manejo de autenticación. Entonces, ¿hay alguna manera de hacer esto? (también, al reutilizarlo, tengo que colocar un rotador sobre la vista web, y cuando carga otra página, no quiero que el usuario vea el contenido de la página cargada previamente, así que es por eso que necesito limpiarlo))¿Cómo limpiar el contenido de UIWebView sin cargar una página vacía?

Gracias!

Respuesta

66

sólo puede utilizar esta línea de código:

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]]; 

Hope esto es lo que desea.

+1

Sí, sé esto, pero lo que pregunté es una forma sin cargar "sobre: ​​en blanco" si usted lee mi pregunta. ¡Gracias de todos modos! – hzxu

+0

no puede hacer lo que quiere que tenga que hacer así, no hay otra forma de hacerlo. –

+1

Creo que esto debería marcarse como la respuesta. – neevek

25

este hizo el truco para mí:

[webView stringByEvaluatingJavaScriptFromString:@"document.open();document.close()"]; 
+1

¡Impresionante! Esta es actualmente la mejor y más rápida solución para este tema. ¡Gracias! –

+0

¡Excelente! ¡Muy rapido! –

+1

Descubrí que esta solución bloquea mi hilo principal durante largos 4 segundos mientras se limpia una gran vista web. –

7

probar esto. Esto funcionó para mí

[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"]; 
+0

Esto es exactamente lo que necesitaba. Muchas gracias. – Deepak

+0

definitivamente la manera más rápida! Gracias – dreampowder

0

Si el único problema es que el spinner desaparece cuando se carga una página en blanco, puede utilizar este código en webViewDidFinishLoad:

– (void)webViewDidFinishLoad:(UIWebView *)currentWebView { 
    if (![currentWebView.request.URL.description isEqualToString: @"about:blank"]) { 
     self.mySpinner.hidden = YES; 
    } 
} 

... entonces la ruleta va a ir hasta que tu vista web esté realmente cargada.

Cuestiones relacionadas