WKWebViewからSafariを起動したい
現在UIWebviewからWKWebviewへの移行作業を行なっております。
しかし、UIWebviewで動作していた、『PDFをアプリ内ではなく、Safariで確認する』という動作が動かなくなりました。
以下が問題のソースになります。
使用言語はSwiftです。
func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! {
if navigationAction.navigationType == WKNavigationType.FormSubmitted{
let pattern = "PDFのURL"
let flag = Regexp(pattern).isMatch(String(navigationAction.request.URL!))
print(flag)
print(navigationAction.request.URL!)
if flag {
UIApplication.sharedApplication().openURL(navigationAction.request.URL!);
}
}
if navigationAction.navigationType == WKNavigationType.LinkActivated{
let pattern = "PDFのURL"
let flag = Regexp(pattern).isMatch(String(navigationAction.request.URL!))
print(flag)
print(navigationAction.request.URL!)
if flag {
UIApplication.sharedApplication().openURL(navigationAction.request.URL!);
}
}
return nil
}
import Foundation
class Regexp {
let internalRegexp: NSRegularExpression
let pattern: String
init(_ pattern: String) {
self.pattern = pattern
self.internalRegexp = try! NSRegularExpression( pattern: pattern, options: NSRegularExpressionOptions.CaseInsensitive)
}
func isMatch(input: String) -> Bool {
let matches = self.internalRegexp.matchesInString( input, options: [], range:NSMakeRange(0, input.characters.count) )
return matches.count > 0
}
func matches(input: String) -> [String]? {
if self.isMatch(input) {
let matches = self.internalRegexp.matchesInString( input, options: [], range:NSMakeRange(0, input.characters.count) )
var results: [String] = []
for i in 0 ..< matches.count {
results.append( (input as NSString).substringWithRange(matches[i].range) )
}
return results
}
return nil
}
移行前のソースはこちらになります。
func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == UIWebViewNavigationType.FormSubmitted{
let pattern = "PDFのURL"
let flag = Regexp(pattern).isMatch(String(request.URL!))
print(flag)
print(request.URL)
if flag {
UIApplication.sharedApplication().openURL(request.URL!);
return false;
}
}
if navigationType == UIWebViewNavigationType.LinkClicked{
let pattern = "PDFのURL"
let flag = Regexp(pattern).isMatch(String(request.URL!))
print(flag)
print(request.URL)
if flag {
UIApplication.sharedApplication().openURL(request.URL!);
return false;
}
}
return true
}
現在は、PDFがSafariではなく、Sebview内で表示してしまうといった状況です。
どこか記述が誤っている箇所があるのでしょうか?
申し訳ありませんが、ご存知でしたら回答お願い致します。