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

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

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

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

iOS

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

Swift

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

Q&A

0回答

6300閲覧

WKwebviewからsafariを開きたい

Makoto0103

総合スコア6

Safari

SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

iOS

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

Swift

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

0グッド

0クリップ

投稿2017/02/23 02:12

###前提・実現したいこと
閲覧ありがとうございます。
現在UIwebviewからWkwebviewへの移行作業を行なっており、完全につまづいてしまいました。
知恵をお貸しいただきたいです。

実現したい動作としては、
『PDF出力のURLをクリックした場合だけ、アプリ内ブラウザではなく、safariで起動したい。』です。
UIwebviewの時はうまく動作しておりました。

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

UIwebviewからWKwebviewに移行した際に、上記の動作が反応せず、PDFがアプリ内ブラウザで表示されるようになってしまった。

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

swift

1 func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! { 2 3 if navigationAction.navigationType == WKNavigationType.FormSubmitted{ 4 let pattern = "PDFのURL" 5 let flag = Regexp(pattern).isMatch(String(navigationAction.request.URL!)) 6 print(flag) 7 print(navigationAction.request.URL!) 8 if flag { 9 UIApplication.sharedApplication().openURL(navigationAction.request.URL!); 10 } 11 } 12 13 if navigationAction.navigationType == WKNavigationType.LinkActivated{ 14 let pattern = "PDFのURL" 15 let flag = Regexp(pattern).isMatch(String(navigationAction.request.URL!)) 16 print(flag) 17 print(navigationAction.request.URL!) 18 if flag { 19 UIApplication.sharedApplication().openURL(navigationAction.request.URL!); 20 } 21 } 22 23 return nil 24 } 25 26import Foundation 27 28class Regexp { 29 let internalRegexp: NSRegularExpression 30 let pattern: String 31 32 init(_ pattern: String) { 33 self.pattern = pattern 34 self.internalRegexp = try! NSRegularExpression( pattern: pattern, options: NSRegularExpressionOptions.CaseInsensitive) 35 } 36 37 func isMatch(input: String) -> Bool { 38 let matches = self.internalRegexp.matchesInString( input, options: [], range:NSMakeRange(0, input.characters.count) ) 39 return matches.count > 0 40 } 41 42 func matches(input: String) -> [String]? { 43 if self.isMatch(input) { 44 let matches = self.internalRegexp.matchesInString( input, options: [], range:NSMakeRange(0, input.characters.count) ) 45 var results: [String] = [] 46 for i in 0 ..< matches.count { 47 results.append( (input as NSString).substringWithRange(matches[i].range) ) 48 } 49 return results 50 } 51 return nil 52 } 53}

###試したこと
WKwebviewではtarget = _blankが反応しないということで、その対応を行い、それについては解決しました。
以下がソースです。

func webView(webView: WKWebView, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! { if navigationAction.targetFrame == nil { UIApplication.sharedApplication().openURL(navigationAction.request.URL!); } }

###補足情報(言語/FW/ツール等のバージョンなど)
ios9以上が対象です。

申し訳ありませんが、もしご存知でしたら解決方法をお教えください。
よろしくお願い致します。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問