Question

Je veux personnaliser un un NSPopUpButton donc je l'ai mis en place un CustomMenuItemView qui en ce moment est que le code suivant (à des fins de test):

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

Maintenant, pour chaque NSMenuItem-je ajouter à la NSMenu dans myPopUpButton.menu je mets la vue de mon point de vue personnalisée:

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

Quand je lance mon programme et ouvre le bouton contextuel de la sélection menuitem semble désactivé (à savoir rien ne se passe quand je clique dessus).

Je devine que ce n'est pas réellement désactivé; il ne vient pas répondre à des événements plus. Ai-je besoin d'ajouter une gestion des événements à mon avis personnalisé? Si oui, comment?

Était-ce utile?

La solution

Je résolu le problème en ajoutant la méthode mouseUp à mon CustomMenuItemView:

- (void)mouseUp:(NSEvent*) event
{
    NSMenu *menu = self.enclosingMenuItem.menu;
    [menu cancelTracking];
    [menu performActionForItemAtIndex:[menu indexOfItem:self.enclosingMenuItem]];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top