Как изменить метод усечения или ширину на всплывающем окне nscombobox
-
13-10-2019 - |
Вопрос
Усечение может быть легко установлено для основной текстовой области, но всплывающее окно не выполняет никакого усечения, с аналогичными путями пользователи не могут сказать, какой путь какой.
Или способ изменить ширину всплывающего списка, чтобы соответствовать самой длинной строке, чтобы усечение не требовалось?
Решение
К сожалению, официального способа сделать это.
Существует способ сделать это, который, хотя он не использует какие -либо частные методы, опирается на то, как NSComboboxes реализуются внутри, и это может измениться в любое время. Это, вероятно, было бы неприемлемо в App Store.
Если вы подкласс nscomboboxcell и реализуете метод nstableViewDelegate tableView:willDisplayCell:forTableColumn:row:
, Вы можете изменить текстовую ячейку, прежде чем она будет отображена во всплывающем окне сочетания.
- (void)tableView:(NSTableView *)tableView
willDisplayCell:(NSCell *)cell
forTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)rowIndex
{
[cell setTruncatesLastVisibleLine:YES];
[cell setLineBreakMode:NSLineBreakByTruncatingMiddle];
}
Это работает, потому что всплывающий список реализован внутри NstableView, а делегат представления таблицы устанавливается на всплывающую ячейку.