我正在使用 NSView 的自定义子类并通过 keyDown/keyUp 方法接收键盘事件,一切正常,除非按下“Cmd ⌘”键,keyDown 事件正常触发但 keyUp 事件永远不会出现。
在我们的例子中,我们自己使用箭头键来向左/向右/向上/向下移动图像,如果用户在按下左/右的同时按住“Cmd ⌘”,它将旋转图像。由于我们得到了 keyDown 事件,图像开始旋转,但它永远不会停止,因为 keyUp 永远不会出现。其他修饰符没有这个问题(例如,如果在按下另一个键时按住 shift、ctrl 或 alt,我们会按预期获得 keyUp)。一种选择是使用不同的修饰符,但最好使其与 PC 版本保持一致(当在 Windows 上使用 Ctrl 时,Cmd 用作替代,使其与标准复制/粘贴命令等保持一致)。
有谁知道它为什么这样做?感觉就像一个错误,但可能只是奇怪的“正确行为”,任何如何绕过它的想法(除了使用替代修饰符或使用直接 HID 访问之类的东西)。
谢谢。