■はじめに
【Swift】WKWebViewでhttpsのページを表示できない原因(ATS) - Swift実践ブログでは、httpsのページに遷移できない現象について取り上げましたが、今回はリンク先が開けない現象に関してまとめたいと思います。
■開発環境
・Xcode 9.4.1
・Swift 4.1.2
■現象
リンク先をタップしても開けない(画面が白くなるわけでもなく、全く反応しない)
※該当ページはSafariの場合、リンク先をタップすると新しいタブにリンク先が表示される。
■検証
1.ATS設定が怪しい
AllowsArbitraryLoadsをYESに変更してもリンク先は開けない。
2.「target=”_blank”」が怪しい
以下記事から、開けないリンクのソースを確認したところ「target=”_blank”」が見事に設定されていました。しかし、「target=”_blank”」が設定されたリンクでも、必ずしも新しいタブが開くとは限らず、タブが開かないリンクは遷移できる状況でした。また、記事に掲載されている実装方法を参考にしても解決できず。
[iOS] WKWebView で target=”_blank” のリンクを開く方法 | Developers.IO
WKWebViewでtarget="_blank"なリンクが開かない時の対処法
■解決
新しいWebビューを作成するインスタンスメソッド「webView(_:createWebViewWith:for:windowFeatures:)」を使うことは検証2と同じものの、以下記事に掲載されている実装方法を参考にして解決しました。
【Swift4】WKWebViewのミニマムサンプル【iOS】
■実装部分
■おわりに
リンク先をタップしても何も反応がない状況から、原因を特定して実装し解決するまでかなり時間がかかってしまいました。表題のテーマでは多くの記事がありますが、本記事が少しでも参考になればと思います。
■関連リンク
・WKWebView - WebKit | Apple Developer Documentation
・[iOS] WKWebView で target=”_blank” のリンクを開く方法 | Developers.IO
・WKWebViewでtarget="_blank"なリンクが開かない時の対処法
・webView(_:createWebViewWith:for:windowFeatures:) - WKUIDelegate | Apple Developer Documentation