2009-09-14 5 views
7

J'ai écrit une petite application qui vit dans le NSStatusBar. Je veux avoir un raccourci global qui, lorsqu'il est touché, affiche le contenu de la barre de menu, exactement comme le comportement du projecteur. J'ai ajouté un raccourci clavier global à mon application, mais je n'arrive pas à afficher la barre meun. Comment puis-je faire ceci? J'ai essayé avec "popUpContextMenu", mais cette méthode affiche le menu dans le coin inférieur gauche, je veux que le menu s'ouvre juste sous l'icône du menu NSStatusBar.Comment afficher un NSMenu par programme?

Répondre

0

Je ne pense pas qu'il existe une méthode prise en charge pour ce faire sans peut-être utiliser le cadre d'accessibilité pour simuler un clic sur votre élément d'état. Quoi qu'il en soit, ce n'est probablement pas une bonne idée d'abuser d'un menu de cette façon.

L'élément de barre de menu Spotlight n'utilise pas de menu NSMenu, il utilise une fenêtre/vue personnalisée. Vous pourriez envisager d'aller sur cette route si vous avez une sorte de vue personnalisée à afficher.

+0

Etes-vous sûr? Accessibility Inspector dit qu'il s'agit d'un menu AXMenu contenant AXMenuItems, et je ne suis pas sûr qu'ils voudraient le ré-implémenter. Les menus sont sacrément compliqués à travailler deux fois de la même manière. –

+0

Je ne pense pas que ce que je fais est considéré comme un abus, je veux avoir exactement la même fonctionnalité que l'aide et les projecteurs. Je peux le faire sans utiliser nsmenu si c'est possible, je pensais qu'ils utilisaient nsmenu aussi. –

5

Vous pouvez le faire, Apple fournit une méthode pour cela "popUpStatusItemMenu"

+2

http://developer.apple.com/mac/library/documentation/Cocoa/Reference/ApplicationKit/Classes/NSStatusItem_Class/Reference/Reference.html#//apple_ref/occ/instm/NSStatusItem/popUpStatusItemMenu: –

+0

Un problème que j'ai trouvé Cependant, il ne met pas en évidence l'icône dans la barre de menus comme le fait le projecteur lorsque vous cliquez dessus. –

Questions connexes