2016-12-19 6 views
3

私はWKWebViewが私に合わないという理由でアプリケーションでUIWebViewを使用しています。 これを説明すると、私はアプリケーションの変換をSwift3(2.2)にして終了し、shouldStartLoadWith関数はJSイベントを取得しません。 変換前に以前のビルドを実行していれば、完璧に動作します。UIWebViewはSwift3のshouldStartLoadWithでJSイベントの取得を停止しました

このような私のコードを見て:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

     let url:URL = request.url! 
     if (url.scheme == "something"){ 

      if (url.host != nil){ 
       var properString = url.absoluteString.removingPercentEncoding! 
       properString = properString.replacingOccurrences(of: "something://", with: "") 
       performJSFunction(message: properString) 
      } 

      return false; 
     } 

     return true 
    } 

ノート:サーバー側/ htmlページでは何も変化します。

+0

解決策はありますか? – Kevin

+0

はい私の答えを見てください –

答えて

2

多くの試行のあと、UIWebViewは、最初にhttps://またはhttp://というイベントが発生することがわかりました。

あなたはこのようにそれを得るために使用される場合はそう:

appname://something 

今、あなたはこのようにそれを取得する必要があります:

https://appname//something 

(「APPNAME」の後にドットが削除されることに注意を払います自動的に - たとえあなたがsrc attributeを介してそれを送信するとしても、

私はそれがあなたの望むものではないことを知っています - しかし、それは本当にうまくいきます。

+0

そして、どのように私はローカルHTMLファイルからhttps/httpを取得するはずですか?どのようなアイデアを助ける? – Machado

+0

私はあなたの質問を理解していれば、私はちょうどこのようにそれを作った:私は、URLは、src属性を始める場合、私はそれがプロセスを継続し、そうでない場合はさせませんでした(私の答えで説明したように)選択された - 私はAのような演技定期的なURL –

0

ローカルhtmlファイルを使用している人は、https://またはhttp://とは関係がありません。

解決策は、<button><a>タグに変更していました。

<a onclick="interface.callFromJS()" href="inapp://capture" ontouchstart="">Your Button Message</a> 

そして、あなたはそこにこれらのイベントをキャッチすることができます:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

     if (request.url?.scheme == "inapp") 
     { 
      doYourAction()  
     } 

     return true 

    } 

は、それが誰かに役立ちます願っています。

関連する問題