Ich habe hier ein sehr, sehr seltsames Problem mit einem NSMenu.
Etwa die Hälfte der NSMenuItems, die ich verwende, haben über die setView: -Methode für NSMenuItem benutzerdefinierte Ansichten für sie. In dieser benutzerdefinierten Ansicht habe ich mouseUp implementiert: um zu fangen, wenn der Benutzer auf den Menüpunkt klickt, und dies funktioniert perfekt beim ersten Öffnen des Menüs.
Beim zweiten Mal wird mouseUp bei keinem dieser Menüpunkte aufgerufen, wenn ich die Maus beim Klicken festhalte. Wenn ich jedoch nach unten klicke, dann bewege den Cursor ein wenig und lasse die Maustaste los. Aus irgendeinem Grund fängt etwas diese Ereignisse ab, aber nur das zweite Mal, wenn das Menü erscheint, und es kommt durch, wenn sich der Cursor nach dem mouseDown-Ereignis bewegt. (Aus irgendeinem Grund wird mouseDown nie aufgerufen, beim ersten oder zweiten Erscheinen des Menüs).
Hat jemand eine Ahnung, was hier vor sich geht? Was fängt meine Mausereignisse ab und warum werden sie beim ersten Erscheinen des Menüs durch meine benutzerdefinierte Ansicht geleitet, aber nicht bei der zweiten?
Ich hatte das gleiche Problem. Es stellte sich heraus, dass ich nach dem ersten Klick auf das Menü eine externe Anwendung gestartet hatte. Wenn das Menü wieder geöffnet wurde, war das Fenster nicht länger der Schlüssel. Das Hinzufügen dieser Methode zur NSView-Unterklasse, die ich innerhalb der Menüpunkte verwende, behob das Problem:
%Vor%Weitere Informationen finden Sie unter folgendem Link: Ссылка
Tags und Links objective-c macos cocoa nsmenuitem nsmenu