33806


UIWebViewからWKWebViewに移行しようと思い、コードを書き換えていたのですが、WKWebViewでのローカルに置いたHTMLファイルが読み込まれません。UIWebViewでは下記のコードでローカルファイルを読み込むことができました。

[code]

    let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory,.userDomainMask, true)[0] + "cacheHtml.html"
                try! html.write(toFile: cachePath, atomically: true, encoding: String.Encoding.utf8)
                let request = URLRequest(url: URL(string: cachePath)!)
                webview.loadRequest(request)
    
[/code]

上記ではキャッシュディレクトリのパスをとって、String型のhtml変数にwebページのソースが格納されているので、それを書き込んでいます。書き込み後、UIWebViewのloadRequestで読み込んでいます。一方、WKWebViewで下記のように実装したところ、画面が真っ白なまま読み込まれません。

[code]

    let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory,.userDomainMask, true)[0] + "cacheHtml.html"
                try! html.write(toFile: cachePath, atomically: true, encoding: String.Encoding.utf8)
                let cacheUrl = URL(string: cachePath)
                let request = URLRequest(url: cacheUrl!)
                webview.load(request)
    
[/code]

WKWebViewでは、urlをそのまま入れたときや、webview.loadHTMLStringではうまくページを読み込みます。wkwebviewでローカルHTMLファイルを読み込むようにするにはどのように実装したら良いでしょうか。


CC BY-SA 3.0
2017-04-06T00:19:07.393
33800
2017-04-06T03:07:42.920
21189
question
swift ios
WKWebViewでのローカルHTMLの読み込みについて


iOS9以上なら`loadFileURL(_ URL: URL, allowingReadAccessTo readAccessURL:
URL)`メソッドを使用できます。  
もしもiOS8以下に対応するならhtmlをStringに読み込んで`loadHTMLString(_ string: String, baseURL:
URL?)`メソッドで読み込むしかありません。


CC BY-SA 3.0
2017-04-06T01:22:48.787
33803
2017-04-06T01:22:48.787
10871
33800
answer


下記のようにすることでローカルファイルを読むことができました。

[code]

    let tmpPath = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("tmpHtml.html") as URL
                try! trimHtml.write(to: tmpPath, atomically: true, encoding: String.Encoding.utf8)
                webview.loadFileURL(tmpPath, allowingReadAccessTo: tmpPath)
    
[/code]

また、webview.load(request(url: tmpPath))でも読み込むことができました。


CC BY-SA 3.0
2017-04-06T03:07:42.920
33806
2017-04-06T03:07:42.920
21189
33800
answer