(Si vous souhaitez modifier la mise en page du menu, de la même façon de l'Aéroport de menu montre plus d'informations lorsque vous cliquez sur l'option, alors continuez à lire. Si vous voulez faire quelque chose de totalement différent, alors cette réponse ne peut pas être aussi pertinentes que vous le souhaitez.)
La clé est - -[NSMenuItem setAlternate:]
. Pour un exemple, disons que nous allons construire un NSMenu
qui a Do something...
action. Vous auriez du code que jusqu'à que quelque chose comme:
NSMenu * m = [[NSMenu alloc] init];
NSMenuItem * doSomethingPrompt = [m addItemWithTitle:@"Do something..." action:@selector(doSomethingPrompt:) keyEquivalent:@"d"];
[doSomethingPrompt setTarget:self];
[doSomethingPrompt setKeyEquivalentModifierMask:NSShiftKeyMask];
NSMenuItem * doSomething = [m addItemWithTitle:@"Do something" action:@selector(doSomething:) keyEquivalent:@"d"];
[doSomething setTarget:self];
[doSomething setKeyEquivalentModifierMask:(NSShiftKeyMask | NSAlternateKeyMask)];
[doSomething setAlternate:YES];
//do something with m
Maintenant, vous pourriez penser que ce serait de créer un menu avec deux éléments: "Faire quelque chose..." et "Faire quelque chose", et vous avez en partie raison. Parce que nous avons mis le deuxième élément de menu à un autre, et parce que les deux éléments de menu ont la même clé équivalent (mais différentes modificateur de masques), alors seule la première (c'est à dire, celui qui est par défaut setAlternate:NO
) s'affichera. Puis, quand vous avez le menu ouvert, si vous appuyez sur la touche de masque qui représente le deuxième (c'est à dire, la touche option enfoncée), puis l'élément de menu transformer en temps réel à partir du premier élément de menu à la seconde.
C'est, par exemple, est de savoir comment le menu Apple travaille. Si vous cliquez une fois sur elle, vous verrez quelques options avec des points de suspension après eux, tels que "Redémarrer..." et "Shutdown...". Le HIG spécifie que si il y a des points de suspension, cela signifie que le système invite l'utilisateur à des fins de confirmation avant l'exécution de l'action. Toutefois, si vous appuyez sur la touche option (avec le menu toujours ouvert), vous remarquerez qu'ils changent de "Redémarrer" et "Arrêt". Les ellipses de s'en aller, ce qui signifie que si vous les sélectionnez alors l'option touche est pressée vers le bas, elles s'exécutent immédiatement sans demander confirmation à l'utilisateur pour confirmation.
La même fonctionnalité est vrai pour les menus dans les éléments d'état. Vous pouvez avoir les informations développées être "autre" des éléments à la régulière info qui montre qu'avec la touche option enfoncée. Une fois que vous comprenez le principe de base, c'est en fait assez facile à mettre en œuvre sans tout un tas de truc.