如何立即停止UIWebView加载

时间:2012-04-11 18:36:31

标签: objective-c ios uiwebview

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

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

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

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

2 个答案:

答案 0 :(得分:2)

这对我有用。

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

webText.delegate=nil;


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

答案 1 :(得分:0)

请勿使用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"]];