2011-01-28 102 views
0

如果我將一個包含HTML的字符串加載到UIWebView中,並且該字符串包含與該字符串相關的對象(超鏈接),即,某個對象的id爲「something」,那麼該鏈接將工作 - 單擊它並單擊Web視圖跳轉到引用的對象。我可以通過UIWebView鏈接到我的項目中的HTML文件嗎?

我想要的是導航到我的項目中的另一個文件,換句話說,就好像不同文件的路徑是一個URL。

我發現如果href是一個URL,比如href =「http://www.amazon.com」,那麼鏈接就起作用。

如果我把一個文件的名字或者這個名字的[NSBundle mainBundle] pathForResource:]放在href中,那麼這個鏈接不起作用。

有什麼方法可以生成指向項目中的HTML文件的URL的等價物,以便可以鏈接到該HTML文件?

回答

1

我發現在此鏈接的解決方案:

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

本質上,該溶液是實施UIWebViewDelegate協議的shouldStartLoadWithRequest方法,和「陷阱」方案的一個特定值。所以,我的鏈接,而不是說一些像:

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

是這樣的:

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

通過捕獲嘗試加載與方案什麼 「myLink的,」 我可以用:

[[request URL] fragment] 

在shouldStartLoadWithRequest中,並獲取filename.ext。然後,我釋放我以前的UIWebView,加載指定文件的內容,並創建一個新的UIWebView的內容。其效果是鏈接正常工作,即使它們正在使用我的代碼實現。我不回覆,因爲我不想通常的加載發生。如果該方案不是mylink,我可以返回YES以允許正常操作。

遺憾的是,我仍然無法跳轉到Web視圖內的片段。在鏈接到真實網址時,您可以說「www.foo.org#page50」之類的內容,並直接跳到新頁面上的某個對象具有「page50」標識的任何位置。用我的方法,我只能去頁面的頂部。

這也不會給我一個「迴歸」功能,除非我記錄文件名並自行實施。

相關問題