2016-04-12 12 views
1

WebKitのWebビューでユーザーがリンク(またはリンク付きのボタン)をクリックできないようにしたいので、ナビゲーションを妨げています。これはUIWebViewで可能と思われます。 WKViewでこれをどのように達成できますか?WebKitによるナビゲーションの防止

ありがとうございました。

答えて

1

このタイプのアクションを防止するには、さまざまな方法があります。どのように防止するかによって大きく左右されます。

絶対最も単純には、すべてのケースで読み込みを停止するようWKWebViewを伝えることであろう

が、初期負荷

var isInitialLoad = true 

func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { 

    if self.isInitialLoad { 
     self.isInitialLoad = false 
    } else { 
     webView.stopLoading() 
    } 
} 

はこの方法でそれをやってすることは、あなたが のWebView(WebViewを発射する原因となるので注意してください:WKWebView、didFailProvisionalNavigationをナビゲーション:WKNavigation!withErrorエラー:NSError)error.code = -999

あなたはページ上のすべてのアンカータグ/ボタンを見つけて、無効/ JavaScriptでそれらを処理するためにevaluateJavascriptを()を使用することができ 。

いずれかの方法、あなたは直接のWebViewに何ができるかをここで見つけることができます:

https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/index.html#//apple_ref/occ/cl/WKWebView

+0

私はここに来るとdownvoteを参照してください。私は理解していない、これは間違いなく答えです。 –

+0

ありがとうございましたArturo、おそらくバグがあった私の例でした(現在は修正済みです)。あるいは、誰かが質問自体を好きではないかもしれません。 元のポスターをすべてのケースで無効にする必要があるのはやや興味深いですが、問題のより良い解決策があるかもしれませんが、問題のコンテキストがなくても、より良い答えを出すのは難しいです。 私の意見では、必ずしも必要でない限り、stopLoading()を使用しないでください。すなわち、クライアントサイドのアプリケーションコードは、サーバが認識できない、または認識できない障害条件を識別します。理想的には、すべてのナビゲーションを停止することはサーバー側の問題です。 – Glorifundel

+0

私の特定のケースでは、ナビゲーションの停止はリクエストをシステムブラウザにリダイレクトするために使用されました。たぶん良い方法がありましたが、これは私のために働いたのです。 –