Pregunta

Quiero personalizar una NSPopUpButton Entonces he implementado un CustomMenuItemView que en este momento solo tiene el siguiente código (para fines de prueba):

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
}

Ahora, por cada NSMenuItem Agrego al NSMenu en myPopUpButton.menu Establecí la vista en mi vista personalizada:

NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Some title" action:NULL keyEquivalent:@""];
menuItem.view = [[CustomMenuItemView alloc] initWithFrame:NSMakeRect(0, 0, 100, 25)];

Cuando ejecuto mi programa y abro el botón emergente, la selección de menuitem parece deshabilitada (es decir, nada sucede cuando hago clic en él).

Supongo que en realidad no está deshabilitado; Simplemente ya no responde a los eventos. ¿Necesito agregar algún manejo de eventos en mi vista personalizada? ¿Si es así, cómo?

¿Fue útil?

Solución

Resolví el problema agregando el mouseUp Método a mi CustomMenuItemView:

- (void)mouseUp:(NSEvent*) event
{
    NSMenu *menu = self.enclosingMenuItem.menu;
    [menu cancelTracking];
    [menu performActionForItemAtIndex:[menu indexOfItem:self.enclosingMenuItem]];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top