2012-10-05 86 views
2

我在iOS 6上遇到了一個大問題。iOS 6 UIWebView帶基URL的loadHTMLString

我需要在應用程序啓動時顯示網頁。我爲此使用了loadHTMLString。在iOS 6之前的一切都按預期工作,但在iOS 6上,似乎需要大約。 2分鐘加載任何不是文本的東西。所有圖像等每2分鐘加載一次,這使我的頁面在大約8分鐘內加載。這在iOS 5.1及更低版本上運行速度非常快。

這裏是我,說明我的問題在網站上發現了一個問題,但沒有一個答案:https://devforums.apple.com/message/724010

我真的需要這個答案。

當我做一個空的應用程序,做到這一點,一切正常,如果我把它放在一個應用程序,它啓動之前做一些網絡,彈出的問題。所以這是非常難以分離的,但就我所能得到的UIWebView而言,我認爲這個問題與baseURL有關,但這只是一種感覺。

+0

你能寫一個HTML文件到你的文檔目錄,然後從那裏加載嗎? –

+0

你認爲這有幫助嗎? –

+0

是的,我認爲是。我們從那裏加載非常大且複雜的HTML文檔,並且在iOS6(和iOS5)上非常快速。 –

回答

0

我不知道爲什麼這解決了我的問題,但它確實如此。

調用webview的My View控制器位於靜態庫中,因爲它正在其他應用程序中重用。通過將代碼從靜態庫中移出並進入應用程序,應用程序開始工作得更好,Web視圖也可以像現在這樣工作。不再有iOS 5的和iOS 6

之間,但通過將此代碼添加任何區別,它確實取得了巨大的差異:

NSHTTPCookie *cookie; 
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [storage cookies]) { 
    [storage deleteCookie:cookie]; 
} 

就像我說的,我無法解釋爲什麼移動代碼進入應用程序本身,而不是將其作爲庫和上面的代碼工作,但我確信它與webview緩存的方式有關。

1

的UIWebView是在iOS 5及6之間略有不同的消息

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

被髮送到視圖代表在IOS 6時loadHTMLString:基本URL:被調用,但是這不是在IOS 5的情況下我的代理方法是

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    [[UIApplication sharedApplication] openURL:[request URL]]; 
    return NO; 
} 

而且似乎是一個空的基本URL導致共享應用程序加載到barf。由於這是iOS 6的新功能,這似乎是罪魁禍首,也許你有類似的東西。在委託方法中檢查空的基礎URL解決了我的問題。它不漂亮,但它的工作。

- (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if ([@"file:///" isEqualToString:[[request URL] absoluteString]]) { 
     return YES; 
    } 

    [[UIApplication sharedApplication] openURL:[request URL]]; 
    return NO; 
} 
+0

我意識到這一點,這並沒有解決我的問題 –

相關問題