2010-01-25 42 views
5

我在NSTextField中使用的文本從文件中加載如下。爲什麼有時超鏈接不會顯示在帶有NSAttributedString的NSTextField中?

NSString *path = [[NSBundle mainBundle] pathForResource:@"Credits" ofType:@"rtf"]; 
NSAttributedString *as = [[NSAttributedString alloc] initWithPath:path documentAttributes:NULL]; 
[creditsLabel setAttributedStringValue:as]; 
[creditsLabel becomeFirstResponder]; 

在窗口中的超鏈接不能以藍色下劃線渲染,除非我先點擊某處的NSTextField,按照這兩個屏幕截圖。

如何讓這些超鏈接看起來像超鏈接?

這裏的RTF:

{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250 
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;} 
{\colortbl;\red255\green255\blue255;} 
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural 

\f0\fs24 \cf0 Copyright \'a9 2009-2010 Fully Functional Software.\ 
All rights reserved.\ 
\ 
BlazingStars is made possible by {\field{\*\fldinst{HYPERLINK "http://www.iterasi.net/openviewer.aspx?sqrlitid=p4mjpt7nl02tyjl08_ctaa"}}{\fldrslt DBPrefsWindowController}}, {\field{\*\fldinst{HYPERLINK "http://mattgemmell.com/source"}}{\fldrslt Image Crop}}, {\field{\*\fldinst{HYPERLINK "http://code.google.com/p/tesseract-ocr/"}}{\fldrslt Tesseract-OCR}}, {\field{\*\fldinst{HYPERLINK "http://andymatuschak.org/articles/2005/12/18/help-with-apple-help"}}{\fldrslt Andy's Help Toolkit}}, and {\field{\*\fldinst{HYPERLINK "http://wafflesoftware.net/shortcut/"}}{\fldrslt Shortcut Recorder}}.\ 
\ 
Includes icons from the BlueCons set by {\field{\*\fldinst{HYPERLINK "http://www.mouserunner.com"}}{\fldrslt Ken Saunders}}.} 

alt text http://pokercopilot.com/stuff/stackoverflow/screenshot2.png

alt text http://pokercopilot.com/stuff/stackoverflow/screenshot1.png

+0

你能向我們展示Credits.rtf嗎? – diederikh 2010-01-25 11:44:00

+0

@Diederik,完成。我編輯了問題以包含RTF。 – 2010-01-25 11:52:48

回答

6

您可以通過在RTF中以這種方式設計鏈接來使鏈接看起來像鏈接,但除非啓用編輯文本屬性和選擇文本,否則文本字段將不處理點擊。 (這兩個索賠的來源:QA1487。)我在您對Diederik Hoogenboom的回答的看法中看到,您已經完成了最後一部分,因此您現在需要做的只是在整個RTF中灑藍色和下劃線。

另一種解決方案是使用文本視圖而不是文本框。

第三種解決方案是使用DSClickableTextField

+0

RTF已經有超鏈接,問題在於當你點擊NSTextField時,超鏈接只顯示藍色和下劃線 – 2010-01-26 15:09:06

+0

這不是我在說的。「**看起來像**鏈接**在RTF中以這種方式設置它們的樣式**:即在RTF中將鏈接設置爲藍色並加下劃線。 – 2010-01-26 16:56:42

+0

Bingo!手動將鏈接設置爲藍色並用下劃線進行設置。 – 2010-01-26 20:39:09

2

確保您設置[creditsLabel setAllowsEditingTextAttributes: YES],否則鏈接將無法點擊。

+0

在界面生成器中,我已經設置了這種情況,並且鏈接是可點擊的。但爲了以防萬一,我手動添加了該行。它不能解決問題。 :-( – 2010-01-25 17:27:42

相關問題