2017-02-13 2 views
0

ローカルに保存されたHTMLコンテンツを表示するために私のアプリケーションにUIWebViewがあります。コンテンツには、アプリケーションに別のドキュメントを表示するよう指示する唯一の目的のリンクが含まれています。これらのリンクは、カスタムURLプロトコル「jcom://」を使用します。このURLは、リンクされているドキュメントの検索方法をアプリに通知するJSON文字列です。リンクがタップされた後、UIWebViewはデリゲートメソッドの実行を停止します

なぜ私たちがドキュメントをリンクするためにhttp URLを使用するだけではないかと疑問に思うかもしれません。それに対する答えは現時点での問題と実際には関連しておらず、その理由は理由も変えられません。

これらのリンクの1つをタップすると、UIWebViewDelegateの方法webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Boolが使用されます。 JSONペイロードをデコードし、正しいページをロードできます。

リンクが有効なドキュメントを参照していないときに問題が発生します。その場合、ユーザーは同じページ上の別のリンクをタップすることができます。しかし、jcom://リンクの1つを処理した後、UIWebViewは、リンクがタップされたときにデリゲートメソッドを送信するのをやめます。

スキームのURLProtocolハンドラを実装しようとしましたが、これは、リンクがタップされたときにUIWebViewがロードエラーを生成するのを止めることです。単一のリンクがタップされるとそのメソッドも呼び出されません。

どのように私は再びリンク上のタップを許可する状態にWebビューを復元することができます知っていますか?ありがとう!

+0

はdelegate関数ですshouldStartLoadWithは常にtrueを返しますか? –

+0

私は両方を試してみましたが、いずれにしても違いはありません。 –

答えて

0

私は必然的に譲り渡して、ページを再ロードするだけです。理想的な解決策ではなく、この特定のケースでは実行可能な解決策です。

関連する問題