2010-04-11 36 views
1

我可以使用“链接面板”创建超链接到NSTextView中的某个网址。或者我可以使用NSAttributedString的NSLinkAttributeName属性手动添加链接。创建超链接到NSTextView中的一些文本

虽然我不想制作超链接到某些外部网址,但我希望能够在NSTextView中创建超链接到一些文本。你知道如何在页面中设置一些文本为书签,然后你可以制作超链接到该书签?任何想法或如何去解决这个问题的例子?

回答

2

我已经一段时间没有这样做,以便借此与一粒盐,但它会是这样的:

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

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

+0

这很有趣TechZen。谢谢。我可以看到UUID的想法,我可以如何在文档之间完成这项工作,而不仅仅是在文档中。我的程序是一个基于核心数据的程序,所以我只需要NSTextView来显示相应的数据库条目(没有NSWorkspace的东西)。我认为最终隐藏在文档中的锚是最好的想法,因为当文档文本改变时,paragraphNumber/sentenceNumber/wordNumber的想法会变得混乱。任何想法如何将隐藏的锚点插入NSAttributedString?我还没有看过。 – regulus6633 2010-04-11 14:25:27

+0

试试这个http://developer.apple.com/mac/library/qa/qa2006/qa1487.html – TechZen 2010-04-11 21:07:35

+0

只需将自定义属性插入NSAttributedString。您不需要使用内置属性,您可以定义自己的属性。 – 2010-04-12 02:04:24