2010-01-25 11 views
5

Il testo che utilizzo in un NSTextField viene caricato da un file come segue.Perché i collegamenti ipertestuali a volte non vengono visualizzati in un NSTextField con una NSAttributedString?

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

I collegamenti ipertestuali nella finestra non rendano in sottolineatura blu a meno che io primo clic da qualche parte sul NSTextField, come per i due screenshot.

Come posso rendere questi collegamenti ipertestuali sempre come collegamenti ipertestuali?

Ecco il 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

Puoi mostrarci il file Credits.rtf? – diederikh

+0

@Diederik, fatto. Ho modificato la domanda per includere l'RTF. –

risposta

6

È possibile ottenere i collegamenti come collegamenti in stile RTF, ma il campo di testo non gestirà i clic se non si abilita la modifica degli attributi di testo e la selezione del testo. (Fonte per entrambi i reclami: QA1487.) Vedo nel tuo commento sulla risposta di Diederik Hoogenboom che hai già fatto l'ultima parte, quindi tutto ciò che devi fare ora è cospargere di blu e sottolineare in tutto il RTF.

Un'altra soluzione sarebbe utilizzare una visualizzazione di testo anziché un campo di testo.

Una terza soluzione sarebbe quella di utilizzare DSClickableTextField.

+0

L'RTF ha già i collegamenti ipertestuali.Il problema è che i collegamenti ipertestuali mostrano solo blu e sottolineatura quando fai clic su NSTextField. –

+0

Non è quello di cui stavo parlando. "Per ** assomigliare ** ai collegamenti per ** styling in questo modo ** nell'RTF ": ovvero, crea i collegamenti blu e sottolineati nell'RTF. –

+0

Bingo! Disegnare manualmente i collegamenti come blu e sottolineato lo ha fatto. –

2

assicurarsi di impostare [creditsLabel setAllowsEditingTextAttributes: YES], altrimenti i collegamenti non saranno cliccabili.

+0

In Interface Builder avevo già impostato questo e il collegamento era selezionabile. Ma nel caso, ho aggiunto manualmente la linea. Non risolve il problema. :-( –