Как изменить метод усечения или ширину на всплывающем окне nscombobox

StackOverflow https://stackoverflow.com/questions/4753377

  •  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, а делегат представления таблицы устанавливается на всплывающую ячейку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top