2012-06-06 13 views
19

Potrzebuję oczyścić zawartość UIWebView (w celu ponownego użycia), ale mam kilka metod obsługi uwierzytelniania w jego metodach delegatów, więc nie chcę ładować pustej strony, takiej jak: puste, aby ją wyczyścić, ponieważ uruchomi mój kod obsługi uwierzytelniania. Czy istnieje sposób na zrobienie tego? (również, poprzez ponowne użycie, muszę umieścić spinner na widoku sieciowym, a kiedy ładuje kolejną stronę, nie chcę, aby użytkownik widział poprzednią załadowaną zawartość strony, dlatego muszę to wyczyścić)Jak wyczyścić zawartość UIWebView bez załadowania pustej strony?

Dzięki!

Odpowiedz

66

można po prostu użyć tej linii kodu:

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

nadzieję, że to, co chcesz.

+1

Tak, wiem o tym, ale to, o co pytałem, to sposób bez ładowania "about: blank", jeśli przeczytasz moje pytanie. Dziękuję wszystkim! – hzxu

+0

Nie możesz zrobić tego, co chcesz, musisz zrobić tak, nie ma innego sposobu, aby to zrobić. –

+1

Myślę, że to powinno być oznaczone jako odpowiedź. – neevek

25

to załatwiło sprawę dla mnie:

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

Awesome! Jest to obecnie najlepsze i szybsze rozwiązanie dla tego tematu. Dziękuję Ci! –

+0

Świetny! Bardzo szybki! –

+1

Odkryłem, że to rozwiązanie blokuje mój główny wątek na długie 4 sekundy podczas czyszczenia dużego widoku internetowego. –

7

Spróbuj tego. Ten pracował dla mnie

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

To jest dokładnie to, czego potrzebowałem. Wielkie dzięki. – Deepak

+0

zdecydowanie najszybszy sposób! dzięki – dreampowder

0

Jeśli jedynym problemem jest to, że spinner znika po włożeniu pustej strony, można użyć tego kodu w webViewDidFinishLoad:

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

... wtedy pójdzie spinner do momentu, aż Twoja przeglądarka rzeczywiście się załaduje.

Powiązane problemy