【问题标题】:How to render text with clickable hyperlinks where you can control the action for click?如何使用可点击的超链接呈现文本,您可以在其中控制点击操作?
【发布时间】:2009-07-26 20:33:44
【问题描述】:

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

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

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


顺便说一句:

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

答案也是NOT A UITextView,因为虽然它能够解析 URL,但不能在点击时设置自定义回调。所以它最终只是打开了 safari。

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

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

【问题讨论】:

    标签: iphone uiwebview


    【解决方案1】:

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

    我在您的 other SO question 中为您指明了方向,所以我有点不解,为什么您没有阅读我链接到的源,因为它回答了这个准确 问题。 TTURLMap 通过“-from:toViewController:selector”方法支持包罗万象。例如:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-27
        • 2015-11-28
        • 2022-07-28
        • 1970-01-01
        • 2010-10-26
        • 2020-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多