1

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

我自己没有准备好 HTML5 文档,而且我对 HTML5 了解不多,所以我无法区分导致这种行为的它们之间的区别。

以下是我创建 web 视图以及加载 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 文档的链接:

这个工作正常。 这个第二次就不行了。

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

这个工作正常。 这个第二次就不行了。

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

谢谢

4

1 回答 1

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];

这是我加载 URL 的方式:

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

这就是它,它有效。我知道这没有意义,但我也希望它对你有帮助......

于 2013-02-13T14:26:50.990 回答