2009-07-26 87 views
0

我試着在我的應用程序中顯示文本中可能存在某個URL的一些文本。我希望網址突出顯示爲超鏈接並可點擊。而且,當它被點擊時,我想提供一個回調,我可以執行自定義操作。當然,URL應該傳回給我的回調,所以我知道該如何處理它(例如,在應用內瀏覽器中打開它)。如何使用可點擊的超鏈接呈現文本,您可以在其中控制點擊操作?

這聽起來可能聽起來很複雜,但基本上appstore中的所有IM應用程序(其中超過30個)都具有此功能,其中用戶可以發送包含URL的IM,並且接收端可以點擊它並打開頁面應用內瀏覽器。

這是如何完成的?我無法弄清楚。如果您有解決方案,請提供示例代碼。謝謝。


BTW:

答案是不是一個UIWebView(因爲它是渲染它的多個實例很慢)。

答案也是不是UITextView,因爲雖然它能夠解析URL,但它不能設置自定義回調點擊。所以它只是最終打開Safari。

答案也是不是TTStyledTextLabel,因爲雖然它能夠解析URL併爲其分配自定義操作,但它需要預先分配在URLMap中。顯然在這種情況下,我們不知道URL是什麼。據我所知,您不能將ALL URL分配給自定義操作。

alt text http://img169.yfrog.com/img169/3373/picture1ufx.png

回答

3

據我所知,您不能將ALL URL分配給自定義操作。

我給你方向在other SO question,所以我有點不解,爲什麼你沒有看過我掛,因爲它回答了這個確切問題的來源。 TTURLMap通過「-from:toViewController:selector」方法支持catch-alls。例如:

[map from:@"*" toViewController:[ViewController class] 
     selector:@selector(someHandler:)]; 

我會理解的混亂,如果你是一個完整的無證庫處理,但Three20庫非常有據可查,以包括你是什麼樣的應用點後。

0

這可能聽起來很複雜,但基本上是在AppStore(其中超過30)的所有IM應用具有此功能,用戶可以在發送包含URL的IM和接收端可以點擊它並通過應用內瀏覽器打開頁面。

然而,你想要的是自定義回調,所以這是一個不同的功能。他們可能正在使用UITextViews。

您可能需要親自編寫代碼,例如文本渲染和鏈接檢測,或修改TTStyledTextLabel(無論哪種情況,看起來都是一個很好的起點)。我做了類似的事情,我只是通過任何鏈接創建UIButtons。對於鏈接檢測代碼,請查看Adium的源代碼。