背景:我正在为iPhone开发一个原生的新闻阅读器类型应用程序,它在UIWebViews中显示许多新闻文章为html。我目前的目标是在我的项目中有一个css文件,可以设置程序化网格的html(文章+评论等)。我已经做了很多概念的小证明,我知道我可以使用<link id=\"stylesheet\" rel=\"stylesheet\" href=\"Test.css\" type=\"text/css\" />
作为webview的loadHTMLString的输入字符串的一部分,并使用mainbundle的bundlepath作为预期方式实现样式化html的结果。 baseUrl输入到该函数。不幸的是,当我在实际项目中执行此操作时,这不起作用。请注意,我的问题可以用简单的html重现。
这是我划伤脑袋的部分:我可以使用@“”作为基本网址,并按预期显示未加样式的HTML。但是,如果我使用bundlepath作为baseUrl,UIWebView将变为空白。进一步调查,webViewDidStartLoad回调永远不会击中它的断点(它在@“”情况下)。 什么会导致它不被触发?在4个回调中,唯一触发的是shouldStartLoadWithRequest,我从中返回NO。 didFailLoadWithError和webviewDidFinishLoad是另外两个。
我怀疑主干包有些问题,但我不知道是什么。
我确实在gdb 有时中收到此消息,尽管这可能是不相关的: void SendDelegateMessage(NSInvocation *):委托在等待10秒后无法返回。主运行循环模式:kCFRunLoopDefaultMode 如果您没有在整个时间间隔内使用触摸屏(可以延长此等待时间),请提交错误。
代码段: 注意:css链接实际上对此问题没有影响
UIWebView* contentView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
contentView.delegate = self;
NSString *htmlString = @"<html><body>Hello World</body></html>";
NSString *path = [bundle bundlePath];
NSURL *resourceBaseURL = [NSURL fileURLWithPath:path];
[contentView loadHTMLString:htmlString baseURL:resourceBaseURL];
loadHTMLString调用时的值:
htmlString: "<html><body>Hello World</body></html>"
resourceBaseUrl: file://localhost/Users/U0107552/Library/Application%20Support/iPhone%20Simulator/3.1.3/Applications/D0EE8DA9-B156-47B3-BC53-9A731F813FB1/Test%20App.app/
我在工作POC和我的应用程序之间可以看到的一个区别是gdb:po htmlString在POC中返回“[上面的字符串]当前语言:auto;当前objective-c”但只是我app中的字符串
抱歉长篇大论。