Как изменить краткую форму отображения NSMenuItem в NSPopUpButton? - PullRequest
1 голос
/ 06 августа 2011

У меня есть кнопка NSPopUpButton с длинным меню элементов, некоторые из которых довольно широкие - шире, чем ширина кнопки. Некоторые из названий пунктов меню выглядят так:

«Начало действительно длинного имени, не столь интересного (важная информация)»

Когда меню закрыто, оно отображается как:

"Начало действительно длинного имени, не ..."

Я бы хотел, чтобы он отображался как:

«Начало по-настоящему ... (важная информация)»

Я не могу понять, как NSPopUpButton создает этот многоточие. Есть ли селектор, вызываемый в NSMenuItem? NSPopUpButton или NSMenu как-то справляются с этим?

Какой класс мне нужен для подкласса и какой селектор мне нужно переопределить или реализовать?

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 07 августа 2011

Фабиан дал мне подсказку, в которой я нуждался.Спасибо!

[[self cell] setLineBreakMode: NSLineBreakByTruncatingMiddle]

Однако, если есть способ получить более точный контроль, это было бы еще лучше.Есть ли способ более точно контролировать усечение?

0 голосов
/ 06 августа 2011

Этот механизм называется усечением. В Интерфейсном Разработчике есть опция под названием Разрывы строк , которая сгруппирована в группу Control . Настройка, которую вы, вероятно, ищете, называется Truncate Middle, которая начнет выбирать буквы с середины пункта меню.

Обратите внимание, что это не решит вашу проблему полностью, так как часть (important info) может быть не единственной, оставшейся после "...", а скорее Name of my Me…tem (important info). Кроме того, вы также можете получить важную информацию, частично усеченную. Но я думаю, у вас все в порядке , если важной информацией является какое-то число или несколько букв.

Может быть, добавление изображения в пункт меню может больше соответствовать вашим потребностям (какой-то значок)? Возможно, есть также опция для приписанных строк, чтобы буквы не усекались ... однако не уверен.

...