Ich entwickle eine Desktop-Anwendung, in der ich Mausereignisse in einem transparenten Fenster aufnehmen kann. Transparente NSWindow nimmt keine Mausereignisse. Daher habe ich setIgnoreMouseEvents auf NO gesetzt, wodurch das transparente Fenster Mausereignisse annehmen kann.
Ich habe das Problem in folgendem Szenario: In diesem Fenster gibt es eine dynamisch erzeugte rechteckige Form. Das transparente Fenster sollte keine Mausereignisse in dieser Region enthalten. Es sollte an das Fenster (einer anderen App) delegiert werden, das hinter dieser Form vorhanden ist. Wenn das mouseDown-Ereignis innerhalb der Form ist, setze ich setIgnoreMouseEvents auf YES. Wenn der Benutzer jetzt Mausereignisse außerhalb der Form ausführt, sollte das transparente Fenster das Ereignis übernehmen. Da setIgnoreMouseEvents auf YES gesetzt ist, verwendet window keine Mausereignisse.
Es gibt keine Möglichkeit festzustellen, dass das mouseDown-Ereignis aufgetreten ist, damit setIgnoreMouseEvents auf NO gesetzt werden kann.
Könnte mir jemand die beste Methode vorschlagen, um Mausereignisse in einem transparenten Fenster zu behandeln?
Deepa
Ich bin gerade auf Quartz Event Taps gestoßen, mit denen Sie das Mausereignis erfassen und Ihren eigenen Callback ausführen können.
Habe es nicht selbst ausprobiert, aber es scheint, als ob Sie in der Lage sein sollten zu überprüfen, wohin der Mausklick fiel und bedingt auf den Werten
ausgeführt wurdeHier ist ein Beispiel :
%Vor%Tags und Links macos nswindow conditional mouseevent transparent