如何清除UIWebView

Tom*_*uzz 42 uiwebview ios

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

Con*_*has 145

尝试将URL设置为about:blank并重新加载页面.

  • 知道一个不会导致`webViewDidFinishLoad`委托方法触发的替代方案吗?(nil'ing delegate不可行:clear紧接着是另一个真实内容加载,所以如果快速响应,请准备好委托......所以需要先关闭委托直到第一次加载,然后再打开第二次加载,但它都是异步的,所以我不能阻塞,直到第一次加载完成). (3认同)
  • 谢谢伙计,我会投票给你,但我自己没有足够的排名 (2认同)

2cu*_*ech 25

只需加载一个空的html字符串

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


Bil*_*son 9

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

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

问题:清除内容的调用称为委托方法,因此获取错误命中(即,在完成清除时获取调用,但是委托被编码为仅在加载真实内容时期望调用).

解决方案:使用已知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];
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:使用这个:

    [self.webView loadHTMLString:@"about:blank" baseURL:nil];
Run Code Online (Sandbox Code Playgroud)

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

最后的复杂性:在实践中,我的两个[webview load...]调用如此接近,我发现,而不是"加载"事件而不是清除,webview实际上是取消它而支持第二个请求并调用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];
    }
}
Run Code Online (Sandbox Code Playgroud)


neo*_*eye 5

Swift,Xcode 7 beta 5

webView.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")!))
Run Code Online (Sandbox Code Playgroud)