NSTextView добавить URL-ссылку на выделенный текст? - PullRequest
3 голосов
/ 24 мая 2011

У меня есть NSTextView.

Я просто хочу добавить атрибут (NSLinkAttributeName) к выделенному тексту в NSTextView ...

Можете ли вы помочья?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 24 мая 2011

Вы хотите получить textStorage представления (которое является в основном изменяемой приписанной строкой), затем добавить атрибут NSLinkAttributeName в выбранный диапазон; значение этого атрибута является URL-адресом для ссылки.

[[textView textStorage] addAttribute: NSLinkAttributeName value: url range:[textView selectedRange]];
0 голосов
/ 24 мая 2011

Прошло некоторое время с тех пор, как я играл с ObjC, но это должно сработать.Он заменяет выделенный текст оригинальным контентом с добавленным вашим атрибутом.Проверено, но прошу прощения за любые опечатки.

NSTextView *textView = ...;
NSDictionary *attributes = ...;

//Get selected text string from TextView (see Text superclass) and append attr link
NSRange selRange = [textView selectedRange];
NSMutableString *changedStr = [[[textView string] substringWithRange:selRange] mutableCopy];
[changedStr appendString:[attributes objectForKey:NSLinkAttributeName]];

//Replace the selected text range in the TextView
[textView replaceCharactersInRange:selRange withString:[NSString stringWithString:changedStr]];

[changedStr release];

См. Определения классов:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSText_Class/Reference/Reference.html

  • -replaceCharactersInRange: withString:
  • -selectedRange
  • -scrollRangeToVisible: если вы хотите представить свои изменения немедленно

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html

  • substringWithRange:
...