2010-01-26 15 views
2

Est-il possible de détecter les actions qui indiquent à mon contrôleur lorsque l'utilisateur effectue un pointage (ou qu'il parcourt) les éléments d'un NSPopUpButton? Je semble seulement être averti sur une nouvelle sélection et je voudrais être averti que l'utilisateur roule sur n'importe quel élément dans le menu.NSPopUpButton: événements du suivi de menu?

grâce

tom

Répondre

2

Vous pouvez définir votre contrôleur en tant que délégué du menu du NSPopUpButton. Vous recevrez alors des messages de délégué -menu:willHighlightItem: lorsque la souris parcourt le menu.

- (void)awakeFromNib 
{ 
    [[popupButton menu] setDelegate:self]; 
} 

- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item 
{ 
    if(menu == [popupButton menu]) 
    { 
     //do something 
    } 
} 
+0

Je pense qu'il vaudrait mieux tester si c'est le même menu ('menu == [menu popUpButton]'). En supposant que NSMenu implémente une signification plus profonde de 'isEqual:', voulez-vous réellement effectuer l'action lorsque l'utilisateur met en surbrillance des éléments d'un menu non connexe ayant les mêmes éléments de menu (pour une définition de * que *)? –

+0

C'est un bon point. J'ai modifié le code pour utiliser une comparaison de pointeur droit. –

+0

Très cool. Merci beaucoup d'avoir pris le temps de répondre. Je vais donner un coup de feu !! – TomH