2016-11-16 60 views
1

正如標題中提到的,我正在尋找檢測所有UIWebViews已完成加載並同時加載HTML字符串的方法。檢測所有UIWebViews加載完成:Objective-C

我有一個自定義視圖,其中有5個Web視圖(其中1個爲問題,4個爲選項)。他們中的每一個加載HTML字符串:

[queWV loadHTMLString:queHtml baseURL:nil]; 
[opt1WV loadHTMLString:opt1Html baseURL:nil]; 
[opt2WV loadHTMLString:opt2Html baseURL:nil]; 
[opt3WV loadHTMLString:opt3Html baseURL:nil]; 
[opt4WV loadHTMLString:opt4Html baseURL:nil]; 

我試着webViewDidFinishLoad

選中此
- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    if(webView == opt4WV) 
    { 
     //All web views has finished loading 
    }  
} 

但實際上,其作爲webViewDidFinishLoad方法不正確獲取調用隨機Web視圖,這取決於內容加載。

有沒有什麼辦法來檢測所有Web視圖的加載完成?

謝謝!

+0

你可以使用一些布爾變量來檢測每個網頁視圖完成加載。 – vaibhav

+0

是的,我認爲我們可以維護櫃檯或陣列,但有時候可能會有3或6個網頁瀏覽,根據選項數量而定。有沒有其他可靠的方法來實現它? – iAkki

+0

你能得到關於一次加載多少網頁瀏覽量的確切數字嗎?截至目前,編號爲 – vaibhav

回答

4

也許我是簡單化了還是看不到東西,但是您是否嘗試在與計數器的組合中使用webViewDidFinishLoad?因此,如果您有5個Web視圖,請從1到5實現一個計數器並計算webViewDidFinishLoad被調用的次數。當你到達5時,所有的視圖都被加載。

+0

是的,因爲我需要跟蹤webviews加載次數。 – iAkki

3

是,使用一個計數器來跟蹤並確保所有的Web視圖代表都設置爲相同的控制器

+0

我認爲新手程序員的更多細節可能會有所幫助。 –

1

聲明變量,「裝」出來的這個功能

int loaded = 0 
 

 
- (void)webViewDidFinishLoad:(UIWebView *)webView 
 
{ 
 
    if(webView == queWV || webView == opt1WV || webView == opt2WV || webView == opt3WV || webView == opt4WV) 
 
    { 
 
     loaded += 1; 
 
    }  
 
    
 
     if (loaded ==5) { 
 
     // process 
 
     } 
 
}

2

in .h文件創建一個這樣的計數器

int webViewLoadCount = 0; 

然後trke這個計數器像.m文件的UIWebView委託方法這樣

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
NSString *string = webView.request.URL.absoluteString; 

    if ([string rangeOfString:queHtml]) { 
     NSLog(@"queWV webview loaded with this %@ ",queHtml); 
     webViewLoadCount = webViewLoadCount + 1; 
    } else if ([string rangeOfString:opt1Html]) { 
     NSLog(@"opt1WV webview loaded with this %@ ",opt1Html); 
     webViewLoadCount = webViewLoadCount + 1; 
    } else if ([string rangeOfString:opt2Html]) { 
     NSLog(@"opt2WV webview loaded with this %@ ",opt2Html); 
     webViewLoadCount = webViewLoadCount + 1; 
    }else if ([string rangeOfString:opt3Html]) { 
     NSLog(@"opt3WV webview loaded with this %@ ",opt3Html); 
     webViewLoadCount = webViewLoadCount + 1; 
    }else if ([string rangeOfString:opt4Html]) { 
     NSLog(@"opt4WV webview loaded with this %@ ",opt4Html); 
     webViewLoadCount = webViewLoadCount + 1; 
    } 
} 

我希望這將幫助你

2

可能會有所幫助

採取NSInteger counter;全球

in viewDidLoad initialise counter = 0;

然後

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
counter++; 

if(counter == 5) 
{ 
    //All web views has finished loading 
    counter = 0; //again reset to 0 
}  
} 

快樂編碼...

相關問題