Isa*_*ler 18 html iphone resources hyperlink webview
我的iPhone应用程序中有一个webview,我的Resources文件夹中也有一些html文件.当我的应用加载时,我将一个页面从我的资源加载到我的webview中.但是,我需要在我的webview中创建指向其他一些资源的链接(例如,图像或其他html文件).只是做一个相对链接不起作用:
<a href="OtherPage.html">Doesn't work</a>
Run Code Online (Sandbox Code Playgroud)
Joe*_*rea 26
显然,根据适用于iPhone OS 3.0的iPhone SDK发行说明,有一些问题:
问题: UIWebView无法在针对3.0构建的应用程序中加载本地资源.
使用时
[UIWebView loadHTMLString:baseURL:],HTML字符串不应引用具有该file://方案的本地资源.相反,在传递NULL或file://对网址baseURL:,或直接在HTML资源<style>和<script>标签.
很公平.但传递标准问题file://URL baseURL并不常用.但是......事实证明,如果你/改为//和空格%20,你将被设定!(使用%20很有意义,但双斜线部分让我感到意外.)
假设你已经NSString *markup设置好了.这就是你所做的一切.(为了便于阅读,我在这里包装了代码.您可能希望重构/调整品味.)
NSString *resourcePath = [[[[NSBundle mainBundle] resourcePath]
stringByReplacingOccurrencesOfString:@"/" withString:@"//"]
stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
[webView loadHTMLString:markup baseURL:[NSURL URLWithString:
[NSString stringWithFormat:@"file:/%@//", resourcePath]]];
Run Code Online (Sandbox Code Playgroud)
只要您的CSS,JavaScript和图像仅通过文件名引用,这应该可以解决iPhone OS 3.0中loadHTMLString:baseURL:的问题!
Aug*_*ust 14
加载这些资源时,需要设置基本URL.您可以使用以下方法执行此操作:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
Run Code Online (Sandbox Code Playgroud)
...其中baseURL将是您的资源文件夹的文件URL.
我解决了这个问题:我把它用于BaseURL就像八月所说:
NSString *path = [[NSBundle mainBundle] bundlePath];
NSURL *baseURL = [NSURL fileURLWithPath:path];
Run Code Online (Sandbox Code Playgroud)
谢谢!
| 归档时间: |
|
| 查看次数: |
36135 次 |
| 最近记录: |