2016-11-22 2 views
1

UIWebViewからWKWebViewに移行する必要があり、これにいくつか問題があります。 "WKWebView"にはメンバーのリクエストはありません。 WKWebViewを使用してこの状況を処理する方法はありますか?私は単にURLをロードして、 ".pdf"が含まれていればボタンを表示するだけです。WKWebViewのwebViewDidFinishLoad

func webViewDidFinishLoad(_ webView : WKWebView) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = false 

    if (webView.request?.url!.absoluteString)!.range(of: ".pdf") != nil { 
     pdfBackButton.isHidden = false 
    } 
    else { 
    pdfBackButton.isHidden = true} 

} 
+0

「webView.url」を試してみてください。さらに詳しい情報はこちら:http://stackoverflow.com/questions/26342546/wkwebview-full-url – toddg

+0

@toddg残念ながら、それだけでは不十分です。印刷して現在のURLを印刷したいのであれば(webView.url)それは動作しません... – ernestocattaneo

答えて

2

あなたはWKNavigationDelegatewebView(_:didFinish:)機能を実装することができます。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = false 
    let url = webView.url 

    if url?.absoluteString.range(of: ".pdf") != nil { 
     pdfBackButton.isHidden = false 
    } 
    else { 
     pdfBackButton.isHidden = true 
    } 
} 
+0

あなたの助けてくれてありがとうございますが、残念ながらそれは動作しません...私は単純な "プリント(URL!)" URLの宣言の後に追加された現在のURLをロードコンソールには決して印刷されないので、このメソッドは決して呼び出されないと思います。 – ernestocattaneo

+0

WKWebViewデリゲートを設定しましたか? – toddg

+0

@toddg私は実際にこれに問題があると思います。 "viewDidLoad"メソッドで "webView.navigationDelegate = self"を設定すると、起動時にアプリケーションがクラッシュします... – ernestocattaneo

1

"WebKit"フレームワークをクラスに追加します。

override func viewDidLoad() { 
    super.viewDidLoad() 
    let myWebView:WKWebView = WKWebView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) 
    myWebView.navigationDelegate = self; 
    let url = URL(string: "https://www.Apple.com")! 
    myWebView.load(URLRequest(url: url)) 
    self.view.addSubview(myWebView) 
} 

その後、

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 
    UIApplication.shared.isNetworkActivityIndicatorVisible = false 
    let url = webView.url 
    print(url as Any) // this will print url address as option field 
    if url?.absoluteString.range(of: ".pdf") != nil { 
     pdfBackButton.isHidden = false 
     print("PDF contain") 
    } 
    else { 
     pdfBackButton.isHidden = true 
     print("No PDF Contain")   
    } 
} 

が、これはあなたを助けることを願っていますWKNavigationDelegateメソッドを実装!

+0

私はこの行を置く場合 "myWebView.navigationDelegate = self;"アプリケーションは起動時に即座にクラッシュします。私はWKWebViewでこれを使うのはもう不可能だと読んだのですが...これは問題でしょうか?その行を使わずにコードを使用すると、実行できますが、同じ問題が発生します。関数didFinishは呼び出されないように見えます。私は実際にロードされたURLを見ません.... – ernestocattaneo

+0

私はこれを試して、それはうまく動作している..!あなたが何かを逃しているように見える.. –

+0

私はそれを分析することができますので、私はあなたが問題を解決するために役立つ...クラッシュレポートやログを送信... !! –