使用iOS6在UIWebView上第二次查看HTML5时出现黑屏

时间:2012-11-08 17:37:53

标签: html5 uiwebview ios6

我在iPad应用程序上使用iOS 6.0.1上的UIWebView显示两个HTML5文档 其中一个没有问题,我可以根据需要打开和关闭webview。 另一个可以显示一次,然后当我关闭我的Web视图并想要再次重新打开文档时,webview显示黑屏。

我自己没有准备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等等。在these SO解答中解释,但它没有用。

以下是有问题和无问题的HTML文档的链接:

This one工作正常。 This one第二次无效。

此外,如果您想在线查看这些HTML5页面,请点击以下链接:

This one工作正常。 This one第二次无效。

iOS 5.x上不会发生此问题。它也可以使用iOS模拟器进行复制。 你有什么建议来解决它?

THX

1 个答案:

答案 0 :(得分:0)

不是一个令人满意的答案,但这是我如何在这个问题上取得进展:

我几天都无法解决这个问题。然后我删除了所有代码并从头开始重新编写了功能,然后就解决了。我无法理解确切的原因,因为我在第二次尝试时没有写任何奇特的东西,所以不幸的是我无法分辨它是如何解决的:(

以下是我刚刚做的事情:

创建一次Web视图,并将其缓存:

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

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

然后,当我想要显示网络视图时:

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

[self.view addSubview:theWebView];

以下是我加载网址的方式:

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

这就是它,它的确有效。我知道这没有意义,但我希望它也能帮到你......