На самом деле, сначала вы должны определить символ токена, который в вашем случае будет%
[tokenField setTokenizingCharacterSet:[NSCharacterSet characterSetWithCharactersInString:@"%%"]];
Строка ввода также должна быть изменена на:
Клей Текст% [Tag]% Другой клей
Текст% [Другой тег]% Больше текста
... чтобы Какао знал, где заканчивается токен.
И если вы хотите, чтобы [Tag] отображался как Tag в поле токена, вам также необходимо реализовать метод tokenField:displayStringForRepresentedObject:
:
- (NSTokenStyle)tokenField:(NSTokenField *)tokenField
displayStringForRepresentedObject:(id)representedObject
{
if ([representedObject rangeOfString: @"["].location == 0) {
return [(NSString*)representedObject substringWithRange:NSMakeRange(1, [(NSString*)representedObject length]-2)];
return representedObject;
}
Однако у этого есть большой недостаток: если вы копируете или просто перемещаете токен, Cocoa вызовет tokenField:displayStringForRepresentedObject:
, и скопированный / перемещенный токен будет заменен на обычный текстовый тег вместо токена [Tag].
Если у кого-то есть решение вышеуказанной проблемы, я буду рад его прочитать.