【问题标题】:Can I link to an HTML file in my project from a UIWebView?我可以从 UIWebView 链接到我的项目中的 HTML 文件吗?
【发布时间】:2011-01-28 05:31:01
【问题描述】:

如果我将一个包含 HTML 的字符串加载到 UIWebView 中,并且该字符串包含与该字符串相关的对象(超链接),即,其中有一些 id 为“某物”的对象,则该链接有效 - 单击它并且 web 视图跳转到引用的对象。

我想要的是在我的项目中导航到不同的文件,换句话说,就好像不同文件的路径是一个 URL。

我发现如果 href 是一个 URL,例如 href="http://www.amazon.com",那么链接就可以工作。

如果我将文件的名称或该名称的 [NSBundle mainBundle] pathForResource: ] 放在 href 中,则链接不起作用。

有没有什么方法可以生成相当于指向项目中 HTML 文件的 URL,以便可以链接到该 HTML 文件?

【问题讨论】:

    标签: uiwebview


    【解决方案1】:

    我在这个链接找到了解决方案:

    How to use Javascript to communicate with Objective-c code?

    本质上,解决方案是实现 UIWebViewDelegate 协议的 shouldStartLoadWithRequest 方法,并“捕获”scheme 的特定值。所以我的链接,而不是说这样的话:

    <a href="http://someplace.location">
    

    就像:

    <a href="mylink://#filename.ext">
    

    通过捕获使用方案“mylink”加载任何内容的尝试,我可以使用:

    [[request URL] fragment]
    

    在 shouldStartLoadWithRequest 中,获取文件名.ext。然后我释放我以前的 UIWebView,加载指定文件的内容,并将其作为新 UIWebView 的内容。效果是链接以正常外观工作,即使它们是用我的代码实现的。我返回 NO 因为我不希望进行通常的加载。如果方案不是 mylink,我可以返回 YES 以允许正常运行。

    很遗憾,我仍然无法跳转到 Web 视图中的片段。在链接到一个真实的 URL 时,您可以说“www.foo.org#page50”之类的内容,然后直接跳转到新页面上某个对象的 id 为“page50”的任何位置。用我的方法,只能到页首。

    除非我记录文件名并自己实现它,否则这也不会给我一个“返回”功能。

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2012-12-01
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多