Question

The text I use in an NSTextField is loaded from a file as follows.

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

The hyperlinks in the window don't render in blue underline unless I first click somewhere on the NSTextField, as per the two screenshots.

How can I make these hyperlinks always look like hyperlinks?

Here's the 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
(source: pokercopilot.com)

alt text
(source: pokercopilot.com)

Was it helpful?

Solution

You can get the links to look like links by styling them that way in the RTF, but the text field won't handle clicks unless you enable editing text attributes and selecting text. (Source for both claims: QA1487.) I see in your comment on Diederik Hoogenboom's answer that you've already done the last part, so all you need to do now is sprinkle blue and underline throughout the RTF.

Another solution would be to use a text view instead of a text field.

A third solution would be to use DSClickableTextField.

OTHER TIPS

Make sure you set [creditsLabel setAllowsEditingTextAttributes: YES], otherwise the links will not be clickable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top