2012-04-11 126 views
4

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

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

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

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

+0

您是否找到解决方案?我也面临同样的问题 – 2016-06-16 20:15:51

回答

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"]]; 
+0

我已经在使用'[webView loadHTMLString:responseString baseURL:[NSURL URLWithString:@“您的原始URL字符串]]];'加载webview的方法,html页面在本地文件系统上。 – manuyavuz 2012-04-12 08:56:21

+0

您的意思是“本地文件系统”作为iOS设备本地吗?或者你的WiFi网络上有一台电脑(与你的iOS设备一样)来提供你的html内容?你的html做什么?这是一个简单的页面或者动态的Ajax或其他基于Java的框架吗? – FeAt 2012-04-12 09:42:12

+0

Html不是从网络获取的,它已经在本地设备上。 Html包含一个长文本内容,它只是一个静态html。 – manuyavuz 2012-04-12 09:54:26

2

这为我工作。

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

webText.delegate=nil; 


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

这可以立即停止,但会显示空白页。 – devios1 2013-11-04 22:14:55