NSResponder empfängt kein keyUp-Ereignis, wenn Cmd ⌘ gedrückt gehalten wird

9

Ich verwende eine benutzerdefinierte Unterklasse von NSView und empfange Tastaturereignisse durch die keyDown / keyUp-Methoden, alles funktioniert gut, außer wenn die "Cmd key" -Taste gedrückt wird, keyDown-Ereignisse werden wie normal ausgelöst, aber das keyUp-Ereignis kommt nie.

In unserem Fall benutzen wir die Pfeiltasten um ein Bild nach links / rechts / oben / unten zu bewegen und wenn der Benutzer "Cmd ⌘" gedrückt hält, während er nach links / rechts drückt, wird stattdessen das Bild gedreht. Da wir das keyDown-Ereignis erhalten, beginnt das Bild zu rotieren, aber es hört nie auf, da keyUp niemals kommt. Bei anderen Modifiern tritt dieses Problem nicht auf (z. B. wenn shift, ctrl oder alt gedrückt gehalten werden, während eine andere Taste gedrückt wird, erhalten wir den keyUp wie erwartet). Eine Option besteht darin, einen anderen Modifizierer zu verwenden, aber es wäre nett, ihn konsistent mit der PC-Version zu halten (Cmd wird als Ersatz dafür verwendet, wenn Strg unter Windows verwendet wird, hält es mit standardmäßigen Copy / Paste-Befehlen usw.). p>

Weiß jemand, warum es das tut? Es fühlt sich an wie ein Fehler, ist aber wahrscheinlich nur seltsam "korrektes Verhalten", irgendwelche Ideen, wie man es umgehen kann (außer einen alternativen Modifikator zu benutzen oder den direkten HID-Zugang zu benutzen).

Danke.

    
Jez Cooke 17.05.2013, 07:49
quelle

1 Antwort

1

Sie können flagsChanged verwenden, um benachrichtigt zu werden, wenn die Modifizierschlüssel nicht aktiv sind:

%Vor%     
Guilherme Rambo 12.04.2014 19:57
quelle