如何清除UIWebView

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

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

只需加载一个空的htmlstring

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

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

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

问题:清除内容的调用调用了委托方法,因此获得假命中(也就是在清除完成时也获得调用,但委托编码仅在加载实际内容时期望调用)。

解决scheme:使用已知的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的内容窗格中显示为文本!

最终的复杂性:在实践中,我的两个[webview load...]调用如此接近,我发现,而不是一个“加载”事件清除,web视图实际上取消它赞成第二个请求和调用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]; } } 

Swift,Xcode 7 beta 5

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

Swift 3.0,XCODE 8

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