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

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

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

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

2 ответа

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

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

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

Мне удалось добиться этого с помощью http://www.cocoadev.com/index.pl?IFVerticallyExpandingTextField. Поскольку NSTokenField наследуется от NSTextField, я сделал IFVerticallyExpandingTextField наследоваться от NSTokenField, а затем поместил в подкласс IFVerticallExpandingTextField, чтобы реализовать все, что мне нужно было сделать с моей версией NSTokenField.

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

Другие вопросы по тегам