ios - WKWebView loadFileURL 只工作一次

标签 ios objective-c ios9 wkwebview

我需要在 WKWebView 中加载一个本地文件。我正在使用新的 ios9 方法

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

它在第一次加载时完美运行(正确调用了导航委托(delegate)),但如果我尝试加载一个新的不同文件,它什么也不做。

修改了 wkwebview 实例中 currentItem 的 URL。但是,如果我强制重新加载委托(delegate)方法 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]];

我错过了什么吗?我找不到与此相关的任何内容。

感谢任何帮助,谢谢。

最佳答案

我遇到了与您的问题非常相似的问题,但就我而言,我在 UIViewCell 对象中引用了 WKWebView 对象(我最近从 UIWebView 迁移过来)。

由于性能原因(标准出队可重用的东西),我正在重用 WKWebView 对象。

长话短说,您在 loadFileURL:allowingReadAccessToURL: 方法中有一个 allowingReadAccessToURL 参数,它告诉 WKWebView 在加载本地文件时允许哪些路径。由于某些原因,当加载具有不同 allowingReadAccessToURL 参数的某些页面时,它不关心此参数。所以我建议使用整个 Documents 路径空间作为此方法的默认参数:

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

希望对您有所帮助。

关于ios - WKWebView loadFileURL 只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472796/

相关文章:

ios - 快速创建单独的计时器

iphone - 在 X 轴(水平轴)上旋转 UIView

objective-c - 如何在类里面要求 ARC?

ios - Swift2运行时实例化UIStoryboard,失败如何处理?

ios - pubnub-chat objective-c 的用户列表

iphone - UIWebView 在 iOS9 上不显示图像,SafariViewController 根本不加载 HTML 文件?

ios - 如何在用户点击 Iphone 中的 UItextview 时获取整个文本

ios - 如何使用 WatchConnectivity 在我的 iOS 和 Watch 应用程序之间共享信息?

ios - 圆形渐变

iOS - 提高 SQLite 的插入性能