Pregunta

He creado una subclase personalizada de NSCell con un NSImageCell, algunos NSTextFieldCells, y un NSPopUpButtonCell.

Me inicializar la celda emergente usando:

    myPopUpCell = [[NSPopUpButtonCell alloc] init];
    [myPopUpCell setBordered:NO];
    [myPopUpCell setAutoenablesItems:NO];
    [myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]];

Y dibujo en drawInteriorWithFrame:inView:

Todo parece funcionar muy bien, excepto que al hacer clic en la celda emergente mientras se ejecuta mi aplicación la célula no se eleva. Cualquier sugerencia sobre lo que podría estar mal?

¿Fue útil?

Solución

Dibujo la pila de botón emergente en drawInteriorWithFrame:inView: va a hacer precisamente eso; dibujarlo, pero nada más. Gestión de eventos de clic no está relacionado con el dibujo, por lo que vamos a tener que hacer algún trabajo en su celda personalizado para interpretar los eventos de ratón, y si están dentro del marco que está utilizando para el botón emergente, pasarlos a la pila de botón. Comience por la subclasificación de los métodos enumerados en los documentos NSCell bajo el seguimiento del ratón, como –trackMouse:inRect:ofView:untilMouseUp:, y usted debe ser capaz de averiguar lo que se necesita para hacer el acto pila de botón correctamente.

En función de lo que está haciendo en realidad se puede encontrar más fácil dibujar la cadena de título a sí mismo, y sólo tiene que utilizar +popUpContextMenu:withEvent:forView: de NSMenu.

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