Как изменить метод усечения или ширину во всплывающем окне NSComboBox - PullRequest
1 голос
/ 21 января 2011

Усечение может быть легко установлено для основной текстовой области, но всплывающее окно не выполняет никакого усечения, с подобными путями пользователи не могут определить, какой путь является каким.

или это способ изменить ширинувсплывающего списка, чтобы соответствовать самой длинной строке, так что усечение не требуется?

1 Ответ

2 голосов
/ 21 января 2011

Официального способа сделать это, к сожалению, нет.

Существует способ сделать это, который, хотя он и не использует никаких частных методов, основан на том, как 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, а делегат табличного представления установлен во всплывающую ячейку.

...