Objective c iOS 6-UIWebView加载HtmlString无法正常工作

Objective c iOS 6-UIWebView加载HtmlString无法正常工作,objective-c,uiwebview,ios6,Objective C,Uiwebview,Ios6,如果有人遇到以下问题,请告诉我您是否能够找到解决方案。我花了几天时间试图想出一个解决办法,但到目前为止运气不好。我正在使用XCode 4.5和iOS 6 SDK Golden Master 基本上,我的应用程序读取HTML文件并将其内容交给web视图进行渲染 NSString *path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"html"]; NSString *html = [NSString stringWi

如果有人遇到以下问题,请告诉我您是否能够找到解决方案。我花了几天时间试图想出一个解决办法,但到目前为止运气不好。我正在使用XCode 4.5和iOS 6 SDK Golden Master

基本上,我的应用程序读取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包含一些标记,例如:

问题是,UIWebView似乎在下载CSS文件时遇到问题。UIWebViewDelegate确实会立即收到webViewDidStartLoad,但它需要大约5分钟才能收到webViewDidFinishLoad消息。CSS未被拾取


如果我从HTML中删除链接,一切正常。

如果没有直接访问项目的权限,真的很难说。您是否尝试在本地浏览器中加载该页面以确认css确实正在加载?如果它正在加载,那么我建议在模拟器中运行应用程序,同时运行类似Charles proxy的东西。Charles将记录您的所有出站请求并显示结果。这样,您就可以确定问题是真正的sdk内部问题还是外部问题

如果您确实拥有apple开发者帐户,请查看WWDC 2012会话视频。您可以在此处找到它们:。有一个名为“在iOS上调试UIWebView和网站”的视频。我还没有看过,但它可能包含一些帮助您解决问题的信息


祝你好运

那么,如果所有css和其他内容都在远程服务器上,为什么要从本地文件加载html?可能这是与安全相关的问题(您试图从本地文件加载html,而从远程加载其他内容),或者只是UIWebView中baseURL的处理问题。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
基本上在我的情况下,异步内容加载产生了一种以前没有的奇怪的竞争条件。我花了一段时间才找到那个。不过,我也同意Brian的观点——使用一些代理软件,观察你的流量,以验证你需要的一切是否都在进入以及何时进入。这可能非常有用


让我知道它是否有用?

您确定这是与iOS6相关的问题吗?我相信我在iOS4下也有类似的问题。。。啊,是的,我无法解决这个问题,于是求助于将我需要的所有东西都包含到我拥有的本地HTML文件中,并将CSS放在页面中。事实上,我完全替换了HTML中的头。抱歉,是的,问题出在我们的一个扩展NSURLCache的类中。iOS 6中的某些行为发生了变化,因此无法正常工作。