我可以从UIWebView链接到项目中的HTML文件吗?

时间:2011-01-28 05:31:01

标签: uiwebview

如果我将包含HTML的字符串加载到UIWebView中,并且该字符串包含相对于该字符串的对象(超链接),即存在ID为“something”的某个对象,则链接可以正常工作 - 单击它并且Web视图跳转到引用的对象。

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

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

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

是否有某种方法可以生成指向项目中HTML文件的URL的等价物,以便可以链接到该HTML文件?

1 个答案:

答案 0 :(得分: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中,并获取filename.ext。然后我释放我之前的UIWebView,加载指定文件的内容,并将其作为新UIWebView的内容。结果是链接与正常外观一起工作,即使它们是用我的代码实现的。我返回NO,因为我不想进行通常的装载。如果方案不是mylink,我可以返回YES以允许正常操作。

令人遗憾的是,我仍无法在网页视图中跳转到片段。在链接到真实URL时,您可以说“www.foo.org#page50”之类的内容,并直接跳转到新页面上的对象的id为“page50”的任何位置。使用我的方法,我只能到页面顶部。

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