Я хочу реализовать multi-line NSTokenFiels. Т.е чтобы вводимые символы или token'ы, при достижении границы поля ввода, переносились на новую строку и высота NSTokenField растягивалась так чтобы все строки было видно, например:
Я нашел в интернете способ реализовать многострочность с помошью метода делегата
controlTextDidChange:
- (void)controlTextDidChange:(NSNotification *)obj {
NSRect oldTokenFieldFrame = [formatTokenField frame];
NSSize cellSize = [[formatTokenField cell] cellSizeForBounds:[formatTokenField bounds]];
NSLog(@"%s cell width: %f cell height: %f", __func__, cellSize.width, cellSize.height);
NSLog(@"%s frame width: %f frame height: %f", __func__, oldTokenFieldFrame.size.width, oldTokenFieldFrame.size.height);
[formatTokenField setFrame:NSMakeRect(oldTokenFieldFrame.origin.x,
oldTokenFieldFrame.origin.y + oldTokenFieldFrame.size.height - cellSize.height,
oldTokenFieldFrame.size.width,
cellSize.height)];
}
Но к сожалению это решение работает не корректно. Когда символы переносятся на новую строку то высота NSTokenField увеличивается на высоту новой строки не сразу, а при каждом новом символе на треть пока не достигнет нормальной высоты строки:
При переходе на каждую новую строку такое поведение повторяется.
Помогите пожалуйсто разобраться как правильно реализовать multi-line в NSTokenField (не могли бы вы привести примеры кода). Всем заранее спасибо.