Почему гиперссылки иногда не показывают в 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
(источник: pokercopilot.com)

alt text
(источник: pokercopilot.com)

5
задан Glorfindel 8 June 2019 в 07:11
поделиться

2 ответа

Вы можете получить ссылки, которые будут выглядеть как ссылки, которые поживают их таким образом в RTF, но Текстовое поле не будет справиться с кликами, если вы не включаете редактирование атрибутов текста и выбора текста. (Источник для обеих утверждений: qa1487 .) Я вижу в своем комментарии к ответу Дильдер-Хоодбума, который вы уже сделали последнюю часть, поэтому все, что вам нужно сделать сейчас, это посыпать синим и подчеркнуть на протяжении всего RTF.

Другое решение было бы использовать представление текста вместо текстового поля.

Третье решение будет использовать DSClickableTextField .

7
ответ дан 14 December 2019 в 01:08
поделиться

Убедитесь, что вы устанавливаете [CreditSlabel SetallowsediteTextTtributes: Да] , В противном случае ссылки не будут кликабельными.

2
ответ дан 14 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: