Domanda

Voglio personalizzare un A NSPopUpButton Quindi ho implementato un CustomMenuItemView Quale in questo momento ha solo il seguente codice (a scopo di test):

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

Ora, per ogni NSMenuItem Aggiungo al NSMenu in myPopUpButton.menu Ho impostato la vista sulla mia vista personalizzata:

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

Quando eseguo il mio programma e apro il pulsante di popup, la selezione di menuuitem sembra disabilitata (cioè non succede nulla quando faccio clic su di esso).

Immagino che non sia effettivamente disabilitato; Semplicemente non risponde agli eventi. Devo aggiungere un po 'di gestione degli eventi nella mia vista personalizzata? Se é cosi, come?

È stato utile?

Soluzione

Ho risolto il problema aggiungendo il mouseUp metodo al mio CustomMenuItemView:

- (void)mouseUp:(NSEvent*) event
{
    NSMenu *menu = self.enclosingMenuItem.menu;
    [menu cancelTracking];
    [menu performActionForItemAtIndex:[menu indexOfItem:self.enclosingMenuItem]];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top