方法1
まず、あなたは以下の
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSError *error;
NSString *responseString = [NSString stringWithContentsOfURL:request.URL
encoding:NSASCIIStringEncoding
error:&error];
//Parse the string here to confirm if it's JSON or HTML
//In case of JSON, stop the loading of UIWebview
if(json) {
retrun NO;
}
return YES;
}
を使用し、webView: shouldStartLoadWithRequest: navigationType:
方法では、その後、あなたのUIViewController
でUIWebView
デリゲートメソッドを設定して処理する必要がある。注:これはパフォーマンスヒットがかかりますHTMLコンテンツの場合、レスポンスは2回読み込まれます。一度stringWithContentsOfURL
メソッドに入り、2回目にWebビューが読み込まれます。
方法2
かかわらず、コンテンツタイプの、あなたがウェブビューロードさせることができ、二重の負荷を避けるために。そして、webViewDidFinishLoad
メソッドでロードされたコンテンツを取得します。
このため、サーバー側でもいくつかの変更を行う必要があります。
JSONを使用してHTMLページは次のように構成されているとします。私は、私は迅速にソリューションをIOSに新しい把握していて、長いブレーンストーミングした後webViewDidFinishLoad
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *res = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('json').innerHTML"];
//Use the JSON string as required
}
あなたが与えた解決策はかなり良いです。有難うございます。 私はパフォーマンスを向上させるために2番目の方法を選択することを考えています。 Webページが初めて読み込まれたときに
が空の場合、ユーザーが操作(クリック)してからdivが更新されるとすぐに、質問が1つあります。今質問はどのように私は(アプリ)ユーザーがクリックした/すべてのイベントが発生した/データがdivタグでいっぱいであることを知って来るだろうか? 私の質問はあなたにはっきりと欲しいと思います。そうでない場合は、親切に私に知らせてください。 –私が理解しているように、 'div'タグは' UIWebView'のコンテンツが更新されると更新されます。この場合、 'webViewDidFinishLoad'メソッドへのコールバックを受け取ります。単に 'res'文字列の長さを調べて、上記のタグ* id *からデータを受け取ったかどうかを判断することができます。 – UditS
私はあなたの解決策を受け入れました。ありがとうございました。 共有することが1つあります。私の古い同僚の1人がもう1つの方法を与えました(3)。つまり、Webサーバーは、メソッド名とパラメータでURLを設定することで、アプリケーション内のメソッドを呼び出すことができます。パフォーマンスにうまく合っていれば、私はそれを続けるだろう。 :-) –