如何清除UIWebView

时间:2011-07-04 21:18:20

标签: ios uiwebview

我对整个编程业务都很陌生,并且想知道是否有任何方法可以清除iphone编程中UIWebView的内容,以便下一个视图的加载符号不会显示在最后一个视图的前面。 非常感谢, 托马斯

6 个答案:

答案 0 :(得分:142)

尝试将网址设置为about:blank并重新加载页面。

答案 1 :(得分:25)

只需将空的html字符串加载到其中

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

答案 2 :(得分:9)

为文档目的回答扩展,以帮助其他人:

我有同样的愿望(在加载下一个url之前清楚的内容)但是设置了一个UIWebView委托来接收webviewDidFinishLoad:(UIWebView)webview消息并更新响应的另一部分UI。

问题:清除的内容的调用也调用了委托方法,因此获取了错误命中(也就是说,在完成清除时也会调用,但是委托被编码为只能调用当加载真实内容时。)

解决方案:使用已知网址进行清除,并在该网址完成时忽略调用{/ 1}}:

webviewDidFinishLoad:

注意:使用此:

- (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];
    }
}

实际上会导致单词“about:blank”在webview的内容窗格中显示为文本!

最终的复杂化:在实践中,我的两个 [self.webView loadHTMLString:@"about:blank" baseURL:nil]; 调用如此接近,我发现没有“加载”事件而是清除,webview实际上是取消它而支持第二个请求和为第一个加载请求调用[webview load...]。因此,我必须在该事件中加入类似的代码:

webView: didFailLoadWithError:

答案 3 :(得分:5)

Swift,Xcode 7 beta 5

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

答案 4 :(得分:3)

Swift 4.0,XCODE 9

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

答案 5 :(得分:0)

Swift 4.2,xCode 10

中的相同答案
if let clearURL = URL(string: "about:blank") {
   myWebView.loadRequest(URLRequest(url: clearURL))
}