Ich habe eine NSMenu
, die NSMenuItems
mit benutzerdefinierten Ansichten enthält. Ich möchte es so, dass wenn die Alt-Taste gedrückt wird, die Menüpunkte einen Teil ihres Aussehens ändern würden (durch ihre Ansicht). Ich fand setAlternative
in der NSMenuItem
Dokumente, aber in der Praxis konnte ich es nur mit NSMenuItems
ohne benutzerdefinierte Ansichten arbeiten. Sobald ich eine benutzerdefinierte Ansicht einstelle, werden alle Menüelemente angezeigt. Ich habe auch versucht, Tasten drücken Ereignisse während das Menü geöffnet war. Aufgrund der anderen Ausführungsschleife empfängt NSApplication's sendEvent:
keine Ereignisse, bis das Menü geschlossen ist. Daher kann ich das eintreffende Ereignis nicht einfach abfangen.Alternative Menüelemente in NSMenu
Weiß jemand, wie ich benachrichtigt werden kann, ob durch Delegation oder Unterklassen, wann die Alt-Taste gedrückt wird, wenn ein Menü geöffnet wird?
Ich brauche es zu geschehen, wenn das Menü geöffnet ist. Zum Beispiel, nicht wenn das Menü geöffnet wird, aber während es geöffnet ist, wenn der Benutzer mit alt drückt, brauche ich eine Benachrichtigung darüber. –
Ich habe die Antwort mit Informationen zur '-flagsChanged' Methode aktualisiert. –
Ich überschreibe - (BOOL) acceptsFirstResponder und - (BOOL) wirdFirstResponder, um YES in den benutzerdefinierten Sichtklassen meiner NSMenuItems zurückzugeben. Ich habe dann flagsChanged: implementiert. Ich habe den First-Responder des ersten Menüeintrags gemacht, wenn menuNeedsUpdate: FlagsChanged: wird jedoch immer noch nicht aufgerufen. Ich habe auch versucht, es nach einer Verzögerung von 0,5 (im Tracking-Event-Loop-Modus) zu reagieren, für den Fall, dass das Menü es irgendwie gestohlen hat. Das hat auch nicht funktioniert. Irgendwelche Ideen? –