Comment puis-je changer la méthode de troncature ou de la largeur sur le menu contextuel d'un NSComboBox

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

  •  13-10-2019
  •  | 
  •  

Question

Le troncature peut être facilement réglé pour la principale zone de texte, mais la fenêtre ne fait pas de troncature, avec des chemins similaires, les utilisateurs ne peuvent pas dire quel chemin est qui.

ou est le moyen de changer la largeur de la liste déroulante pour correspondre à la plus longue chaîne de sorte que la troncature n'est pas nécessaire?

Était-ce utile?

La solution

Il n'y a aucun moyen officiel pour ce faire, malheureusement.

Il y a une façon de le faire qui, bien qu'il n'utilise pas de méthodes privées, repose sur la façon NSComboBoxes sont mises en œuvre en interne, et qui pourrait changer à tout moment. Cela ne serait probablement pas acceptable dans l'App Store.

Si vous sous-classe NSComboBoxCell et mettre en œuvre la méthode NSTableViewDelegate tableView:willDisplayCell:forTableColumn:row:, vous pouvez modifier la cellule de texte avant qu'il ne soit affiché dans la fenêtre pop-up de la zone de liste déroulante.

- (void)tableView:(NSTableView *)tableView
        willDisplayCell:(NSCell *)cell
        forTableColumn:(NSTableColumn *)tableColumn
        row:(NSInteger)rowIndex
{
   [cell setTruncatesLastVisibleLine:YES];
   [cell setLineBreakMode:NSLineBreakByTruncatingMiddle];
}

Cela fonctionne parce que la liste déroulante est mis en œuvre en interne avec un NSTableView, et le délégué de la vue de la table est définie sur la cellule pop-up.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top