Vue personnalisée en NSMenuItem désactive la sélection NSPopUpButton
-
28-10-2019 - |
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?
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