1

iOS 6.0.1 で UIWebView を使用して、iPad アプリケーションで 2 つの HTML5 ドキュメントを表示しています。
そのうちの 1 つには問題がなく、Web ビューを好きなだけ開いたり閉じたりできます。もう 1 つは一度表示できますが、Web ビューを閉じてドキュメントを再度開くと、Web ビューに黒い画面が表示されます。

私は自分で HTML5 ドキュメントを準備しておらず、HTML5 に関する知識もあまりないため、この動作の原因となるそれらの違いを見分けることはできません。

WebView を作成する方法と HTML5 をロードする方法は次のとおりです。

UIWebView *theWebView = [[UIWebView alloc] init];

theWebView.scalesPageToFit = YES;
theWebView.clearsContextBeforeDrawing = YES;
theWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

//adjust frame and add to view controller's view here

NSURL *url = [NSURL URLWithString:@"http://www.handypdf.net/davsan"];
[theWebView loadRequest:[NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]];

HTML5 ドキュメントを開くたびに、Web ビューを再作成します。なので再利用はしません。

問題を解決するために、キャッシュ、Cookie などをクリーニングしてみました。これらのSO の回答で説明しましたが、うまくいきませんでした。

問題のある HTML ドキュメントと問題のない HTML ドキュメントへのリンクを次に示します。

これは正常に動作します。 これは2回目は機能しません。

また、これらの HTML5 ページをオンラインで確認したい場合は、次のリンクを参照してください。

これは正常に動作します。 これは2回目は機能しません。

この問題は、iOS 5.x では発生しません。iOS シミュレーターを使用して複製することもできます。それを修正するために何を提案しますか?

どうも

4

1 に答える 1

0

満足のいく答えではありませんが、この問題をどのように進めたかを以下に示します。

私は数日間これを解決できませんでした。次に、すべてのコードを削除し、機能を最初から書き直して解決しました。2回目の試行で空想的なことを何も書いていなかったため、正確な理由を理解できませんでした。残念ながら、それがどのように解決されたのかわかりません:(

これが私がやったことです:

Web ビューを 1 回作成し、それをキャッシュします。

+(UIWebView *)getTheWebView {
    if (theWebView) return theWebView;

    theWebView = [[UIWebView alloc] init];
    theWebView.scalesPageToFit = YES;
    theWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    return theWebView;
} 

次に、Web ビューを表示したい場合:

UIWebView *theWebView = [HTML5Manager getTheWebView];
theWebView.frame = self.view.frame;

[self.view addSubview:theWebView];

URL を読み込む方法は次のとおりです。

[theWebView loadRequest:[NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]];

これだけで動作します。意味がないことはわかっていますが、あなたにも役立つことを願っています...

于 2013-02-13T14:26:50.990 に答える