如何使用可点击的超链接呈现文本,您可以在其中控制单击操作?

时间:2009-07-26 20:33:44

标签: iphone uiwebview

我正在尝试在我的应用中显示一些文本中可能包含某些网址的文字。我希望将URL突出显示为超链接并可单击。此外,单击它时,我想提供一个回调,我可以执行自定义操作。当然URL应该传回我的回调,所以我知道如何处理它(比如在应用内浏览器中打开它等)。

这可能听起来很复杂,但基本上appstore中的所有IM应用程序(超过30个)都具有此功能,用户可以发送包含URL的IM,接收端可以单击它并在中打开页面-app浏览器。

这是怎么做到的?我只是想不出来。如果您有解决方案,请提供示例代码。谢谢。


顺便说一句:

答案是不是UIWebView (因为渲染它的多个实例的速度非常慢)。

答案也是 NOT A UITextView ,因为虽然它能够解析URL,但无法在点击时设置自定义回调。所以它最终开启野生动物园。

答案也是 NOT TTStyledTextLabel ,因为虽然它能够解析URL并为其分配自定义操作,但它需要在URLMap中预先分配。显然,在这种情况下,我们不知道URL是什么。据我所知,您不能将所有网址分配给自定义操作。

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

2 个答案:

答案 0 :(得分:3)

  

据我所知,您无法将所有网址分配给自定义操作。

我在你的other SO question给了你指示,所以我有点疑惑为什么你没有阅读我链接的来源,因为它回答了这个完全的问题。 TTURLMap通过“-from:toViewController:selector”方法支持catch-alls。例如:

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

如果您正在处理一个完整的未记录的库,我会理解这种混淆,但是Three20库非常有很好的文档记录,包括样本应用程序,它们完全符合您的要求。

答案 1 :(得分:0)

  

这可能听起来很复杂,但基本上appstore中的所有IM应用程序(超过30个)都具有此功能,用户可以发送包含URL的IM,接收端可以单击它并在中打开页面-app browser。

然而你想要的是自定义回调,所以这是一个不同的功能。他们可能正在使用UITextViews。

您可能需要自己编写代码,例如文本渲染和链接检测,或修改TTStyledTextLabel(在任何一种情况下,它都是一个好的起点)。我做了类似的事情,我只是在任何链接上创建UIButtons。对于链接检测代码,请查看Adium的来源。