#author("2020-04-20T05:18:31+00:00","default:wikiwriter","wikiwriter")
&tag(WKWebView);
*目次 [#l4917058]
#contents
*関連ページ [#q5a15af0]
*参考情報 [#r46145e6]

*基本 [#laee947f]
-iOSやmacOSで利用できるあらたなWeb Viewコンポーネント
-従来のUIWebViewと比較してクラッシュ率が低いらしい。
-ただし使用方法が結構異なるので注意が必要。


*Tips [#n092e4f7]

**キャッシュをクリアする [#eb29c891]
-SafariでうまくいってWKWebViewで上手くいかない場合キャッシュのせいかもしれない(CKEditorの高さが上手く調整できないとか)。
-手動でキャッシュをクリアする方法は不明。
-コードからは以下のようにしてクリアできる。
#pre{{
    func clearCache() {
        let websiteDataTypes = NSSet(array: [WKWebsiteDataTypeDiskCache, WKWebsiteDataTypeMemoryCache])
        let date = Date(timeIntervalSince1970: 0)
        WKWebsiteDataStore.default().removeData(ofTypes: websiteDataTypes as! Set<String>, modifiedSince: date, completionHandler:{ })
    }
}}

**target="_blank"のリンクを開く [#m7500511]
-[[WKWebViewでtarget="_blank"なリンクが開かない時の対処法:https://qiita.com/ShingoFukuyama/items/b3a1441025a36ab7659c]]に解決策がある。
-UIWebViewの時と基本的な考え方は同じ。ようするにtarget="_blank"の場合新しくウィンドウを作成する必要があり、そのための処理を作り込む必要がある。
-WKNavigationDelegate のwebView(_:decidePolicyFor:decisionHandler:)を作成しその中で処理を行う。
-またはWKUIDelegateのwebView(_:createWebViewWith:for:windowFeatures:)を使用する。
-target="_blank"の場合webView(_:decidePolicyFor:decisionHandler:)が呼ばれるが、window.openの場合webView(_:createWebViewWith:for:windowFeatures:)しか呼ばれない。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS