質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

12347閲覧

WKWebViewで開くことができないページ

tanaka_tora

総合スコア11

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2017/01/09 04:26

編集2017/01/09 12:23

###前提・実現したいこと
WKWebViewで該当ページのリンクをタブを実装せずに開けるようにしたい。

###発生している問題・エラーメッセージ

WKWebviewで新しいウィンドウを開くリンクを開いた際、
下記のコードで強制的にページを開くことができていましたが、
該当ページのリンクだけはボタンを押しても反応がなく、
開くことができません。
完全に手詰まりですので、ご教示いただければ幸いです。

■正常に開くことができたリンク
・target="_blank" ※html
・window.open(url, "_blank") ※JavaScript

■該当ページ
「mobage」「GREE」のログインボタンが開くことができない
http://game.granbluefantasy.jp/#authentication

canOpenURL: failed for URL: "about:blank" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"

###該当のソースコード

Swift

1func webView(webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration, forNavigationAction navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { 2 3 if navigationAction.targetFrame == nil { 4 webView.load(navigationAction.request) 5 } 6 return nil 7}

###試したこと
「WKWebView」「_blank」のキーワードで公開されているコードを一通り試したが解決せず。
SFSafariViewControllerを使うとログインボタンが正常に押せたが、
カスタマイズ性が低いため断念。

###補足情報(言語/FW/ツール等のバージョンなど)
Swift3
Xcode8
ATSの設定はinfo.plistで切っています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下の実装で遷移でしました参考にしてください。

参考URL: WKWebViewでtarget="_blank"なリンクが開かない時の対処法

swift

1import UIKit 2import WebKit 3 4class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate { 5 6 var wkWebView: WKWebView! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 wkWebView = WKWebView() 12 wkWebView.navigationDelegate = self 13 wkWebView.uiDelegate = self 14 15 view = wkWebView 16 17 // スワイプで戻るを許可 18 wkWebView.allowsBackForwardNavigationGestures = true 19 20 if let url = URL(string:"http://game.granbluefantasy.jp/#authentication") { 21 let req = NSURLRequest(url:url) 22 wkWebView.load(req as URLRequest) 23 } 24 } 25 26 func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { 27 guard let url = navigationAction.request.url else { 28 return nil 29 } 30 31 guard let targetFrame = navigationAction.targetFrame, targetFrame.isMainFrame else { 32 webView.load(URLRequest(url: url)) 33 return nil 34 } 35 return nil 36 } 37}

投稿2017/01/10 04:09

編集2017/01/10 04:09
_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanaka_tora

2017/01/10 15:02

回答いただき、ありがとうございます。 ご記載の方法を試しましたところ、正常に遷移することができました。 本当にありがとうございます! ベストアンサーとさせて頂きました。m(_ _ )m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問