2012-04-11 123 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