ローカルに保存された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ビューを復元することができます知っていますか?ありがとう!
はdelegate関数ですshouldStartLoadWithは常にtrueを返しますか? –
私は両方を試してみましたが、いずれにしても違いはありません。 –