0

我正在尝试在我的应用程序中显示一些文本,其中文本中可能有一些 URL。我希望 URL 突出显示为超链接和可点击。此外,当它被点击时,我想提供一个回调,我可以在其中执行自定义操作。当然,应该将 URL 传递回我的回调,以便我知道如何处理它(比如在应用内浏览器中打开它等)。

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

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


顺便提一句:

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

答案也不是UITextView,因为虽然它能够解析 URL,但不能在点击时设置自定义回调。所以它只是结束了野生动物园。

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

替代文字 http://img169.yfrog.com/img169/3373/picture1ufx.png

4

2 回答 2

3

据我所知,您不能将所有 url 分配给自定义操作。

我在你的另一个 SO 问题中给了你指示,所以我有点困惑为什么你没有阅读我链接到的源,因为它回答了这个确切的问题。通过 " " 方法TTURLMap支持包罗万象。-from:toViewController:selector例如:

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

如果您正在处理一个完整的无文档库,我会理解这种混淆,但是 Three20 库的文档非常好,以至于包含了完全符合您要求的示例应用程序。

于 2009-07-27T10:08:32.877 回答
0

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

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

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

于 2009-07-26T23:02:30.213 回答