NSTokenField: разные цвета для токенов

Я создал NSTokenField в своем xib. Я хотел бы отображать токены разных цветов внутри этого поля tokenField. Значение: некоторые жетоны будут синими, остальные красными (согласно их содержанию). Это возможно?

Следующий код у меня не работает. Я надеюсь, что кто-то может мне помочь:

- (id)tokenField:(NSTokenField *)tokenField representedObjectForEditingString:(NSString *)editingString
{
    id returnRepresentedObject = nil;

    NSTokenFieldCell *tf = [[NSTokenFieldCell alloc] init];
    tf.stringValue = editingString;
    tf.backgroundColor = [NSColor redColor];
    returnRepresentedObject = tf;

    return returnRepresentedObject;
}

Результат: все жетоны остаются синими... :-(

Любая помощь будет высоко оценена!


person Nili    schedule 16.07.2013    source источник


Ответы (2)


Это возможно с использованием частных API. Подкласс NSTokenAttachmentCell (частный) и NSTokenFieldCell.

Пример проекта

введите здесь описание изображения

Используйте класс BWTokenAttachmentCell и BWTokenFieldCell и NSTokenAttachmentCell из BWToolkit. Измените метод инициализации BWTokenAttachmentCell.

[пример проекта

ПРИМЕЧАНИЕ:

Используйте этот метод, если вы не ориентируетесь на Mac App Store.

person Parag Bafna    schedule 29.07.2013
comment
Спасибо @Parag, однако мне было интересно, как раскрасить разные ячейки разными цветами: первую - синим, вторую - красным и т. д. Я уточню свой первоначальный вопрос. - person Nili; 29.07.2013

Вероятно, вам придется играть свою собственную роль. Существует видео wwdc от 2010 года о расширенной обработке Cocoa Text. NSTokenField использует NSTextAttachments для отображения маркеров.

person whatever0010011    schedule 27.07.2015