Come faccio a cambiare il metodo di troncamento o la larghezza sulla comparsa di una NSComboBox
-
13-10-2019 - |
Domanda
Il troncamento può essere facilmente impostata per l'area di testo principale, ma il pop-up non fa alcun troncamento, con percorsi simili, gli utenti non possono dire quale percorso è quale.
o è il modo per modificare la larghezza della lista pop-up in modo che corrisponda la stringa più lunga in modo che il troncamento non è necessario?
Soluzione
Non v'è alcun modo ufficiale per fare questo, purtroppo.
C'è un modo per farlo, che, anche se non utilizza metodi privati, si basa sul modo NSComboBoxes sono implementate internamente, e che potrebbe cambiare in qualsiasi momento. Questo probabilmente non sarebbe accettabile in App Store.
Se si sottoclasse NSComboBoxCell e implementare il metodo tableView:willDisplayCell:forTableColumn:row:
NSTableViewDelegate, è possibile modificare la cella di testo prima che venga visualizzato nella finestra popup della casella combinata.
- (void)tableView:(NSTableView *)tableView
willDisplayCell:(NSCell *)cell
forTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)rowIndex
{
[cell setTruncatesLastVisibleLine:YES];
[cell setLineBreakMode:NSLineBreakByTruncatingMiddle];
}
Questo funziona perché la lista popup viene implementato internamente con una NSTableView, e delegato della vista tabella è impostato per la cella a comparsa.