4

我不知道我已经阅读了多少个论坛,但我真的不知道为什么它不起作用!

我有一个 iPhone 应用程序,我想向我的用户展示一本 Epub 书。

用户可以在线阅读,也可以下载到Application Documents目录下阅读。

我建立了与在线版本相同的文件夹结构并将其保存到文件夹“frontend”中。

我也可以阅读这个维护的 .HTML 文件,但是链接的 JS/CSS 和 HTML 文件不起作用。

所以我有一些截图。我不知道,为什么 javascript 无法访问 .html 文档。

离线版本 - 保存到文件系统“文档文件夹”中

在线版本 - 直接来自服务器 - 没关系!

我希望你能给我一些提示。

4

2 回答 2

4

Simply write the code

NSString *path = [[NSBundle mainBundle] pathForResource:@"offlineEpub" ofType:@"html"];
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
UIWebView *webView = [[UIWebView alloc] init];
[webView loadHTMLString:content baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
[self.view addSubview:webView];

The main thing is provide base url as your mainBundle or documents directory.

于 2013-03-11T18:13:08.073 回答
4

经过大量摆弄并阅读了很多答案,这是我的简单综合解决方案:

1) 确保所有捆绑资源都是唯一的——目录被展平

这非常令人沮丧,但是如果您有目录“About/index.html”和“Home/index.html”,最后一个要复制到包中的“index.html”将覆盖前一个。

2) JavaScript 文件将处于错误的构建阶段

在 Xcode 中单击您的项目,然后单击您的应用程序目标,然后单击 Build Phases。请注意 JavaScript 文件将错误地位于 Compiled Sources 中:将 JS 文件移动到 Copy Bundle Resources 中。

3) 使用 UIWebView 的 loadRequest:

不要从字符串加载。请改用 NSURL。

NSBundle *mainBundle = [NSBundle mainBundle];
NSURL *url = [mainBundle URLForResource:@"some_page" withExtension:@"html"];
NSURLRequest *urlReq = [NSURLRequest requestWithURL:url];

// Assuming you create an IBOutlet defined like:
// @property (strong, nonatomic) IBOutlet UIWebView *wv;
[self.wv loadRequest:urlReq];
于 2014-02-22T19:46:33.380 回答