HTML链接来自UIWebView中的本地HTML文件

sti*_*ice 2 uiwebview ios ios7

这里对XCode很新

基本上,我们有一个依赖于UIWebView的应用程序.当存在有效的网络连接时,我们将移动网页加载到UIWebView中,如果没有连接,我们将加载本地版本的html网页.我的方案与脱机或有限的网络连接方案有关.当这个离线场景发生时,我可以使用此线程的答案加载我的本地html文件:

使用uiwebview中的本地html从相对路径加载资源

当我在加载的本地html文件中单击一个简单的html链接(也在我的本地app目录中)时出现问题.我试过这些,但当我点击链接时,没有任何反应,链接不会带我到任何地方,模拟器只允许我复制文本:

<a href="file:///Sample.html">
<a href="file://Sample.html">
<a href="Sample.html">
<a href="/Sample.html">
<a href="Testing/Sample.html">
Run Code Online (Sandbox Code Playgroud)

sample.html网页与初始加载的html页面位于同一目录中.不知道我哪里出错了,显然错过了一些简单的事情.

Chr*_*geb 8

我建议你重新检查你的目录层次结构.您描述的行为是当您尝试导航到的链接在本地设备上不存在时发生的情况.我运行了以下小测试:

向视图控制器添加了Webview并加载了page1.html

UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 10, 320, 300)];
[self.view addSubview:webView];

NSURL *url = [[NSBundle mainBundle] URLForResource:@"page1" withExtension:@"html"];
NSString *html = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSURL *baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseUrl];
Run Code Online (Sandbox Code Playgroud)

page1.html

<html>
<body>
    <h1>Page 1</h1>
    <a href="page2.html">Go to Page2</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

page2.html

<html>
    <body>
        <h1>Page 2</h1>
        <a href="page1.html">Back to Page 1</a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

项目结构的图像

项目结构的图像

最终的结果是,它的工作原理.单击将从第1页转到第2页,然后再使用本地文件返回.如果我们将链接更改为:

<a href="page3.html"></a>

如果不存在,您将获得与您遇到的相同的行为.那就是你只能剪切和复制,而不是真正去链接.

在此输入图像描述 在此输入图像描述