2010-01-25 9 views
5

El texto que uso en un NSTextField se carga desde un archivo de la siguiente manera.¿Por qué los hipervínculos a veces no se muestran en NSTextField con NSAttributedString?

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

Los hipervínculos en la ventana no convierten en subrayado azul a menos que primero haga clic en algún lugar de la NSTextField, según las dos capturas de pantalla.

¿Cómo puedo hacer que estos hipervínculos siempre parezcan hipervínculos?

Aquí está la 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

¿Puede mostrarnos los Créditos.rtf? – diederikh

+0

@Diederik, Listo. Edité la pregunta para incluir el RTF. –

Respuesta

6

Puede obtener los enlaces para que parezcan enlaces al diseñarlos de esa manera en el RTF, pero el campo de texto no manejará los clics a menos que permita editar los atributos de texto y seleccionar texto. (Fuente para ambas afirmaciones: QA1487). Veo en su comentario sobre la respuesta de Diederik Hoogenboom que ya ha realizado la última parte, por lo que todo lo que necesita hacer ahora es salpicar azul y subrayar todo el RTF.

Otra solución sería usar una vista de texto en lugar de un campo de texto.

Una tercera solución sería usar DSClickableTextField.

+0

El RTF ya tiene los hipervínculos. El problema es que los hipervínculos solo se muestran en azul y subrayan al hacer clic en NSTextField. –

+0

No es de eso de lo que estaba hablando. "** Parecer ** como ** enlaces por ** diseñando de esa manera ** en el RTF ": es decir, hacer que los enlaces sean azules y subrayados en el RTF. –

+0

¡Bingo! Alinear manualmente los enlaces como azul y subrayarlo lo hizo. –

2

asegúrese de que establece [creditsLabel setAllowsEditingTextAttributes: YES], de lo contrario los enlaces no se podrá hacer clic.

+0

En Interface Builder ya había configurado esto para ser el caso, y se hizo clic en los enlaces. Pero por las dudas, agregué manualmente la línea. No soluciona el problema. :-( –

Cuestiones relacionadas