在WKWebView中加载本地文件并不在设备中工作

时间:2016-01-05 04:50:02

标签: ios objective-c ios8 wkwebview local-files

我无法在wkwebview中加载本地epub文件(来自文档目录)。它在模拟器中工作,但不在设备中工作。我从here了解到它是iOS 8的一个错误。 iOS 8已经解决了吗?请帮帮我,我该怎么办。我在设备中遇到错误 -

vertical-align

以下是代码段 -

The operation couldn't be completed. (KCFErrorDomainCFNetwork error 1.)

2 个答案:

答案 0 :(得分:0)

iOS 8有一种解决方法,这里由shazron在Objective-C中演示 这里举例试试吧。 enter image description here

答案 1 :(得分:0)

在找到解决方案的一年多之后,我们需要使用 loadFileURL 来访问本地资源,这是我在WKWebView上的工作代码,加上使用loadHTMLString代替了负载。我的WebView BTW中的 vistaweb

感谢您的回答:Load local web files & resources in WKWebView

对不起,但是在Swift里

        do {

            let local = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
            // Loading: Library/Caches/repositorioLocal/esferas/znvUifZhH8mIDr09cX8j/index.html
            let resourceFolder = "repositorioLocal/esferas/znvUifZhH8mIDr09cX8j"
            let fileToLoad = "index.html"

            let urlToFolder = URL(fileURLWithPath: local).appendingPathComponent(resourceFolder)
            let urlToFile =  URL(fileURLWithPath: local).appendingPathComponent(resourceFolder).appendingPathComponent(fileToLoad)
            let fileContent = try String(contentsOf: urlToFile)

            let webConfiguration = WKWebViewConfiguration()
            webConfiguration.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs")
            webConfiguration.allowsInlineMediaPlayback = true

            vistaweb = WKWebView(frame: self.view.frame, configuration: webConfiguration)
            self.vistaweb.loadFileURL(urlToFolder, allowingReadAccessTo: urlToFolder)
            self.vistaweb.loadHTMLString(fileContent, baseURL: urlToFile)
            self.view.addSubview(vistaweb)

        } catch let error {
            print("Error: \(error.localizedDescription)")
        }