У меня была та же проблема, и я обнаружил, что единственное работоспособное решение состояло в том, чтобы «сбрасывать» поле токена при каждом изменении его содержимого. В основном это сводилось к запуску следующего метода контроллера представления, который обрабатывал представление с полем токена:
- (void) resetTokenField {
// Force the token field to redraw itself by resetting the represented object.
id anObject = [self representedObject];
[self setRepresentedObject: nil];
[self setRepresentedObject: anObject];
[[self tokenField] setNeedsDisplay: YES];
}
Представляемый объект - это объект, который содержит все отображаемые токены. В моем случае это был фрагмент текста Richt, где токены - это, в основном, теги.
Я обнаружил, что NSTokenField
- королевская боль в шее, но она продолжалась, поскольку мне очень нравилась ее презентационная сторона.
РЕДАКТИРОВАТЬ: мое поле токена было привязано к методу tagsAsArray
представленного объекта контроллера представления. Так что в основном я использовал привязки Какао для решения этой проблемы.