как настроить NSTokenField, как в полях To/CC в почте Mac?

Я могу работать с NSTokenField, он прост в использовании... но мне нужны ваши предложения о том, как я могу настроить его так же, как в полях «Кому/Копия» в почте Mac, т.е. когда нет. токенов в поле токенов увеличивается высота поля «Кому» увеличивается до определенного предела, после чего начинает появляться вертикальный скроллер!

По умолчанию, когда мы используем поле токена, ни его высота не увеличивается, ни появляется вертикальный скроллер! Я пробовал разные комбинации в IB, но не смог получить функциональность, подобную почте Mac.

Может ли кто-нибудь предложить мне какое-то решение для этого ??


person Devarshi    schedule 25.02.2010    source источник


Ответы (2)


Вам придется создать подкласс NSTokenField, чтобы получить желаемую функциональность. Будьте уверены и вызовите setWraps: YES.

Когда содержимое поля токена изменится, вам придется рассчитать требуемый размер поля токена и изменить его размер самостоятельно. То же самое с добавлением полосы прокрутки. После того, как высота поля маркера достигнет определенного размера, вы вставите в поле представление прокрутки. И наоборот, когда пересчет размера поля маркера меньше критического размера, вы удалите представление прокрутки.

Это значительный объем работы (я обнаружил), чтобы заставить его работать правильно. Apple говорит, что NSTokenField «обеспечивает токенизированное редактирование, аналогичное полю адреса в почтовом приложении», но на самом деле это совсем не похоже, поскольку в нем нет встроенного изменения размера, а перетаскивание проблематично для всего, кроме текста.

person Hank Gillette    schedule 17.06.2010

Мне удалось добиться этого с помощью IFVerticallyExpandingTextField. Поскольку NSTokenField наследуется от NSTextField, я сделал IFVerticallyExpandingTextField наследником от NSTokenField, а затем создал подкласс IFVerticallExpandingTextField, чтобы реализовать все, что мне нужно было сделать с моей версией NSTokenField.

Это должно быть просто падение. Сразу же это должно начать работать.

person skabob11    schedule 17.09.2010
comment
Смена владельца сайта cocodev.com сделала его немного шатким. Тем не менее, простой сайт Google: cocoadev.com IFVerticallyExpandingTextField находит (очень плохо отформатированный) код: cocoadev.com/IFVerticallyExpandingTextField - person Mark Aufflick; 17.11.2014