Как очистить UIWebView

Я очень новичок во всем бизнесе по программированию и задавался вопросом, есть ли способ очистить содержимое UIWebView в программировании iphone, чтобы символ загрузки для следующего вида не отображался перед последний вид. Большое спасибо, Томас

Ответ 1

Попробуйте настроить URL-адрес на about:blank и перезагрузите страницу.

Ответ 2

Просто загрузите в него пустую строку html

[self.webView loadHTMLString:@"" baseURL:nil];

Ответ 3

Расширение ответа для целей документации, чтобы помочь кому-то другому:

У меня было такое же желание (ясный контент перед загрузкой следующего URL-адреса), но у делегата UIWebView было настроено на получение сообщения webviewDidFinishLoad:(UIWebView)webview и обновление другой части пользовательского интерфейса в ответ.

Проблема: вызов для очистки содержимого, также называемый методом делегирования, поэтому получение ложных обращений (то есть получение вызова, когда выполняется очистка), но делегат закодирован, чтобы ожидать вызова только при загрузке реального контента).

Решение: используйте известный URL для очистки и webviewDidFinishLoad: игнорировать вызовы, сделанные после завершения этого URL-адреса:

- (void) startLoadOfNextURL:(NSURL*)url
{
    // clear:
    [self.webView loadHTMLString:@"" baseURL:nil];

    // Load real next URL
    NSURLRequest* request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
}


- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"WebView finished loading: %@", webView);
    if ([self.webView.request.URL.absoluteString isEqualToString:@"about:blank"]) {
        NSLog(@"  This is Blank. Ignoring as false event.");
    }
    else {
        NSLog(@"  This is a real url");
        [self updateUIInSomeWay];
    }
}

Примечание: используя это:

    [self.webView loadHTMLString:@"about:blank" baseURL:nil];

на самом деле приводит к появлению слов "about: blank" в виде текста в панели содержимого веб-просмотра!

Заключительное осложнение: на практике, когда мои два [webview load...] звонят так близко друг к другу, я обнаружил, что вместо "загруженного" события для ясности веб-просмотр фактически отменял его в пользу второго запроса и вызывал webView: didFailLoadWithError: для первого запроса на загрузку. Таким образом, я должен был поставить аналогичный код в этом случае:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"WebView error on: %@", webView);
    NSLog(@"Error is: %@", error);

    NSURL* failingURL = [error.userInfo objectForKey:@"NSErrorFailingURLKey"];
    if ([failingURL.absoluteString isEqualToString:@"about:blank"]) {
        NSLog(@"  This is Blank. Ignoring.");
    }
    else {
        NSLog(@"  This is a real URL.");
        [self doSomethingAboutError];
    }
}

Ответ 4

Swift, Xcode 7 beta 5

webView.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")!))

Ответ 5

Swift 3.0, XCODE 8

webView.loadRequest(URLRequest.init(url: URL.init(string: "about:blank")!))