2010-07-20 4 views
1

Je crée un menu contextuel par programme et je le mets à jour avec la méthode déléguée menuNeedsUpdate: (NSMenu *), puis je l'affiche en utilisant popUpMenuPositioningItem: nil atLocation: mouseLoc inView : méthode nulle.menu contextuel appelant à la mise à jour de tous les menus à chaque pression de touche

Cela fonctionne très bien en ce qui concerne le contrôle de la souris. Cependant, lorsque j'utilise le clavier (lettres ou touches fléchées), j'ai remarqué qu'il appelle menuNeedsUpdate: pour tout, le menu racine et les sous-menus. Ceci est très inefficace et rend l'utilisation du menu via le clavier lent.

Pourquoi cela se produit-il? Un moyen de le contourner ou de l'arrêter?

Répondre

1

Je voudrais essayer d'implémenter menuHasKeyEquivalent:forEvent:target:action: sur votre délégué (et toujours retourner NO si vous savez que rien dans le menu n'a un équivalent de clé).

+0

Brillant. Cela l'a résolu. Intéressant cependant, j'ai placé un NSLog dans la méthode menuHasKeyEquivalent: forEvent: target: action: à des fins de débogage pour voir si elle est appelée. Eh bien, ça s'appelle je suppose puisque ça marche bien maintenant (ne remplit pas le menu entier à chaque pression de touche), mais le NSLog ne vient pas pour une raison quelconque. – the979kid

+0

Bizarre, mais je suis content que ça a marché! – Wevah

Questions connexes