2009-07-26 100 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的源代码。