¿Cómo cambio el método de truncamiento o la anchura de la ventana emergente de un NSComboBox

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

  •  13-10-2019
  •  | 
  •  

Pregunta

El truncamiento se puede configurar fácilmente para el área de texto principal, pero la ventana emergente no hace ningún truncamiento, con rutas similares, los usuarios no pueden saber qué camino es cuál.

o es la manera de cambiar el ancho de la lista emergente para que coincida con la cadena más larga por lo que no es necesario que el truncamiento?

¿Fue útil?

Solución

No hay manera oficial a ello, por desgracia.

Hay una manera de hacerlo que, a pesar de que no utiliza ningún método privado, se basa en la forma en que se implementan NSComboBoxes internamente, y eso podría cambiar en cualquier momento. Esto probablemente no sería aceptable en la App Store.

Si subclase NSComboBoxCell y poner en práctica el método NSTableViewDelegate tableView:willDisplayCell:forTableColumn:row:, se puede modificar la celda de texto antes de que se visualiza en la ventana emergente del cuadro combinado.

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

Esto funciona porque la lista emergente se implementa internamente con un NSTableView, y el delegado de la vista de tabla se establece en la celda emergente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top