WKWebView loadFileURL只能工作一次

问题描述:

我需要在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]]; 

我缺少的东西?我找不到与此相关的任何内容。

任何帮助表示赞赏,谢谢。

我有一个非常类似的问题,但在我的情况下,我有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