¿Por qué a veces los hipervínculos no se muestran en un NSTextField con un NSAttributedString?

StackOverflow https://stackoverflow.com/questions/2131943

Pregunta

El texto que uso en NSTextField se carga desde un archivo de la siguiente manera.

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 se muestran subrayados en azul a menos que primero haga clic en algún lugar de NSTextField, según las dos capturas de pantalla.

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

Aquí está el 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
(fuente: pokercopilot.com)

alt text
(fuente: pokercopilot.com)

¿Fue útil?

Solución

Se puede obtener los enlaces para parecerse a ellos por vínculos de estilo que forma en la RTF, pero el campo de texto no manejará clics menos que habilite la edición de texto y atributos de la selección de texto. (Fuente de ambas demandas:. QA1487 ) Veo en su comentario sobre la respuesta de Diederik Hoogenboom que ya ha hecho la última parte, todo lo que tiene que hacer ahora es azul y subrayado espolvorear en todo el RTF.

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

Una tercera solución sería utilizar DSClickableTextField .

Otros consejos

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top