2010-04-11 45 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