Попытка создать ссылку с помощью NSTextField - PullRequest
5 голосов
/ 03 апреля 2010

Я использую эту категорию (это верно?) http://www.nightproductions.net/references/dsclickableurltextfield_reference.html#setAttributedStringValue

для реализации интерактивных текстовых полей. Я импортировал заголовочный файл в свой класс контроллера и установил его строковое значение как это

NSAttributedString* str = [[NSAttributedString alloc] initWithString:@"http://www.yahoo.com"];
[url setAttributedStringValue:(NSAttributedString *)str];

[str release];

Текстовое поле недоступно для выбора и недоступно для редактирования.

Значение текстового поля задано, но оно не кликабельно и не является ссылкой.

Заранее спасибо.

1 Ответ

9 голосов
/ 15 ноября 2012

Я нашел другой простой способ показать ссылки в NSTextField.Вы можете использовать HTML.Вот краткий пример:

-(NSAttributedString *)stringFromHTML:(NSString *)html withFont:(NSFont *)font
{
  if (!font) font = [NSFont systemFontOfSize:0.0];  // Default font
  html = [NSString stringWithFormat:@"<span style=\"font-family:'%@'; font-size:%dpx;\">%@</span>", [font fontName], (int)[font pointSize], html];
  NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding];
  NSAttributedString* string = [[NSAttributedString alloc] initWithHTML:data documentAttributes:nil];
  return string;
}

Теперь вы можете вызвать метод для текстового поля:

// @property IBOutlet NSTextField *tf;
[tf setAllowsEditingTextAttributes: YES];
[tf setSelectable:YES];
NSString *credits = @"Visit our <a href=\"http://www.webpage.com\">webpage</a>";
[tf setAttributedStringValue:[self stringFromHTML:credits withFont:[tf font]]];
...