NSTokenField: different colors for tokens

2.1k views Asked by At

I have created an NSTokenField in my xib. I'd like to display tokens with different colors inside that tokenField. Meaning: some tokens will be blue, the rest will be red (according to their content). Is that possible?

The following code doesn't work for me. I hope someone can help me out:

- (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;
}

Result: all tokens remain blue... :-(

Any help will be highly appreciated!

2

There are 2 answers

1
Parag Bafna On

Its possible by using private APIs. Subclass NSTokenAttachmentCell (Private) and NSTokenFieldCell.

Sample project

enter image description here

Use BWTokenAttachmentCell and BWTokenFieldCell class and NSTokenAttachmentCell class dump from BWToolkit. Modify initialize method of BWTokenAttachmentCell.

[sample project

NOTE:

Use this method if you are not targeting for Mac App Store.

0
whatever0010011 On

You'll probably have to role your own. There is a wwdc video from 2010 about advanced Cocoa Text handling. The NSTokenField Uses NSTextAttachments to render the tokens.