12

誰かが以下の問題を経験した場合は、修正を見つけることができたかどうか教えてください. 私は解決策を考え出すために数日を費やしましたが、今のところ運がありません. iOS 6 SDK Golden Master で XCode 4.5 を使用しています。

基本的に、私のアプリケーションは HTML ファイルを読み取り、そのコンテンツを Web ビューに渡してレンダリングします。

NSString *path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];

NSURL *baseURL = [NSURL URLWithString:@"http://mysite.com"];

[webView loadHTMLString:html baseURL:baseURL];

HTML にはいくつかの <link> タグが含まれています。たとえば、次のようになります。 />

問題は、UIWebView が CSS ファイルのダウンロードに問題があるように見えることです。UIWebViewDelegate は webViewDidStartLoad をすぐに受け取りますが、webViewDidFinishLoad メッセージを受け取るまでに約 5 分かかります。CSS は取得されません。

HTML からリンクを削除すると、すべてが正常に機能します。

4

3 に答える 3

4

iOS 6 が登場すると、Web ビューで同様の問題が発生しました。次の UIWebView プロパティを true (YES) に設定してみてください { iOS 6 以降でのみ使用可能 }:

 suppressesIncrementalRendering
 A Boolean value indicating whether the web view suppresses content rendering until it is
 fully loaded into memory.

 @property(nonatomic) BOOL suppressesIncrementalRendering

基本的に、私の状況では、非同期コンテンツの読み込みによって、以前にはなかった奇妙な競合状態が発生しました。それを見つけるのにしばらく時間がかかりました。私もブライアンに同意します.プロキシソフトウェアを使用し、トラフィックを監視して、必要なものがすべて入ってくることと、いつ入ってくるかを確認します.これは非常に便利です.

それが役立つかどうか教えてください。

于 2012-11-25T00:58:46.290 に答える
1

プロジェクトに直接アクセスできなければ、言うのは本当に難しいです。cssが実際にロードされていることを確認するために、ローカルブラウザにページをロードしようとしましたか?ロード中の場合は、Charlesプロキシのようなものを実行しながら、シミュレーターでアプリを実行することをお勧めします。Charlesは、すべてのアウトバウンドリクエストを記録し、その結果を表示します。このようにして、問題が本当にSDKの内部にあるのか外部にあるのかを判断できます。

アップルデベロッパアカウントをお持ちの場合は、WWDC2012セッションのビデオをご覧ください。あなたはここでそれらを見つけることができます:https ://developer.apple.com/videos/wwdc/2012/ 。「iOSでのUIWebViewsとWebサイトのデバッグ」というタイトルのビデオが1つあります。まだ見ていませんが、問題の解決に役立つ情報が含まれている可能性があります。

幸運を!

于 2012-10-26T13:11:45.290 に答える
0

では、すべての css やその他のものはリモート サーバー上にあるのに、ローカル ファイルから html をロードするのはなぜでしょうか? おそらく、これはセキュリティに関連するものです (ローカル ファイルから html を読み込もうとしているのに、他のファイルをリモートから読み込もうとしている)、または UIWebView での baseURL の処理に問題があるだけです。

于 2012-11-04T22:05:07.693 に答える