【问题标题】:Create hyperlink to some text in NSTextView在 NSTextView 中创建指向某些文本的超链接
【发布时间】:2010-04-11 09:34:28
【问题描述】:

我可以使用“链接面板”在 NSTextView 中创建指向某个 url 的超链接。或者我可以使用 NSAttributedString 的 NSLinkAttributeName 属性手动添加链接。

虽然我不想创建指向某些外部 url 的超链接,但我希望能够创建指向 NSTextView 中某些文本的超链接。您知道如何在 Pages 中将一些文本设置为书签,然后您可以创建指向该书签的超链接吗?关于如何去做的任何想法或例子?

【问题讨论】:

    标签: objective-c cocoa hyperlink nstextview


    【解决方案1】:

    我已经有一段时间没有这样做了,所以把它和一粒盐放在一起,但它是这样的:

    1. 您需要为您的应用定义一个协议来处理 URL。它看起来像“myApplicationName://aPath”
    2. 在应用程序Info.plistfile 中,在CFBundleURLTypes 键下添加协议。
    3. 为应用程序编写代码以响应来自 NSWorkspace 的 openURL。这意味着应用程序必须了解如何将 URL 样式路径转换为其文档之一中的特定位置。

    我认为处理 URL 路径的最佳方法是为每个文档分配一个 UUID,然后为段落和句子分配一个数字方案。 URL 最终看起来像:myApplicationName://UUID/paragraphNumber/sentenceNumber/wordNumber。或者,您可以插入隐藏文本来定义锚点,然后搜索该锚点。

    【讨论】:

    • 这很有趣 TechZen。谢谢。我可以通过 UUID 的想法看到如何在文档之间进行这项工作,而不仅仅是在文档中。我的程序是一个基于核心数据的程序,所以我只需要 NSTextView 来显示适当的数据库条目(没有 NSWorkspace 的东西)。我认为最终隐藏在文档中的锚点是最好的主意,因为随着文档文本的变化,paragraphNumber/sentenceNumber/wordNumber 的想法会变得混乱。任何想法如何将隐藏的锚点插入到 NSAttributedString 中?我还没有研究过。
    • 只需将自定义属性插入到 NSAttributedString 中。不需要使用内置属性,可以自己定义。
    • 谢谢大家。我正在路上。我设置了一个自定义 url 方案。看来我需要注册 kAEGetURL applescript 事件,如步骤 1 到 3 中所示,以便在我的应用程序中接收 url:stackoverflow.com/questions/49510/…。现在,今天我将致力于实现一个书签方案来设置 nsttributedstring 中的锚点。然后我将编写解析代码来处理传递的 url 并根据需要选择书签。这很酷!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多