2016-11-07 176 views
3

我需要在WKWebView中加載本地文件。我使用的是新ios9方法WKWebView loadFileURL只能工作一次

- (nullable WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL

它完美的第一負載(導航代表團正確稱呼),但如果我嘗試加載一個新的和不同的文件,它什麼都不做。

修改了wkwebview實例中currentItem的URL。但是,如果我強制重新加載委託方法didFinishNavigation與以前設置的URL調用。我也嘗試向前導航,但應該加載的文件是當前文件,它不在backForwardList上。

我使用啓動WKWebView並加載文件中的代碼:

self.wk_webview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
self.wk_webview.scrollView.delegate = self; 
self.wk_webview.navigationDelegate = self; 
[self.view addSubview:self.wk_webview]; 

NSURL *url = [NSURL fileURLWithPath:local_path]; 
[self.wk_webview loadFileURL:url allowingReadAccessToURL:[url URLByDeletingLastPathComponent]]; 

我缺少的東西?我找不到與此相關的任何內容。

任何幫助表示讚賞,謝謝。

回答

4

我有一個非常類似的問題,但在我的情況下,我有UWiewCell對象(我最近從UIWebView遷移)的WKWebView對象的引用。

由於性能原因(標準出列可重用的東西),我正在重用WKWebView對象。

要長話短說,你有loadFileURL一個allowingReadAccessToURL參數:allowingReadAccessToURL:方法,告訴WKWebView什麼是允許路徑時,它加載本地文件。由於某種原因,當加載了一個帶有不同的allowReadAccessToURL參數的頁面時,它並不關心這個參數。所以我建議使用整個文檔路徑空間作爲此方法的默認參數:

NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] objectAtIndex:0]; 
[self loadFileURL:request.URL allowingReadAccessToURL:documentsURL]; 

希望它有幫助。

+0

它不幫助我。 –

+1

將包含候選文件的整個目錄傳遞到「allowReadAccessToURL:」中是非常重要的,否則當您嘗試在webView中加載另一個文件時,它將無法工作。 – Loebre