【问题标题】:How to stop UIWebView loading immediately如何立即停止 UIWebView 加载
【发布时间】:2012-04-24 02:39:50
【问题描述】:

正如 ios 文档所说,应该使用 [webView stopLoading] 方法来停止 webview 加载任务。

据我所知,这些方法是异步运行的,并且不会立即停止当前处理加载请求。

但是,我需要一种方法来强制 webview 立即停止正在进行的任务,因为加载部分会阻塞主线程,这可能会导致动画闪烁。

那么,有没有办法成功呢?

【问题讨论】:

  • 你找到解决办法了吗?我也面临同样的问题

标签: objective-c ios uiwebview


【解决方案1】:

这对我有用。

if (webText && webText.loading){
    [webText stopLoading];
}

webText.delegate=nil;


NSURL *url = [NSURL URLWithString:@""];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webText loadRequest:requestObj];

【讨论】:

  • 这确实可以立即停止,但会显示一个空白页。
【解决方案2】:

不要使用 UIWebView 直接下载您的 html 文档。 使用像ASIHTTPRequest 这样的异步下载机制让后台线程下载你的html。 当您获得带有 html 内容的 requestFinished 时,将其提供给 UIWebView。

来自 ASIHTTPRequest 页面的示例如何创建异步请求:

- (IBAction)grabURLInBackground:(id)sender
{
   NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setDelegate:self];
   [request startAsynchronous];
}     

- (void)requestFinished:(ASIHTTPRequest *)request
{
   // Use when fetching text data
   NSString *responseString = [request responseString];
 
   // Use when fetching binary data
   NSData *responseData = [request responseData];
}     

- (void)requestFailed:(ASIHTTPRequest *)request
{
   NSError *error = [request error];
}

responseString 用于您的UIWebView 的loadHTMLString 方法的参数:

UIWebView *webView = [[UIWebView alloc] init];
[webView loadHTMLString:responseString baseURL:[NSURL URLWithString:@"Your original URL string"]];

【讨论】:

  • 我已经在使用[webView loadHTMLString:responseString baseURL:[NSURL URLWithString:@"Your original URL string"]];方法加载webview,html页面在本地文件系统上。
  • 您的意思是“本地文件系统”作为 iOS 设备本地吗?或者您的 WiFi 网络上有一台计算机(与您使用的 iOS 设备相同)来提供您的 html 内容?你的html是做什么的?它是一个简单的页面还是带有 Ajax 或其他基于 Java 的框架的动态页面?
  • Html 不是从网络获取的,它已经在本地设备上。 html里面有很长的文字内容,只是一个静态的html。
  • 我相信有些复杂的网页用这种方法是加载不出来的。例如,如果网页在部分加载后运行一些 javascript 来加载额外的资源。
猜你喜欢
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 2016-12-18
  • 2019-01-11
相关资源
最近更新 更多