没有标题栏无法捕获键盘

The*_*Tom 3 macos cocoa keyboard-events sprite-kit swift

我正在尝试使用spriteKit构建动画,并且可以通过键盘进行控制(箭头键可以加快,减速和倒带动画)。

我还需要此应用程序具有完全透明的背景,这是我使用以下方法管理的:

scene?.backgroundColor = NSColor.clearColor()
Run Code Online (Sandbox Code Playgroud)

以及 :

self.window.opaque = false
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切正常,我可以控制动画。但是,一旦我尝试通过取消选中右侧面板上的窗口框来删除Interface Builder中的标题栏,键盘捕获就会停止工作。

keyDown:不再被调用,当您的Mac告诉您键盘输入不再是一种选择时,我得到了“叮当”的声音特征。即使我在菜单栏中仍然有我的应用程序的名称。

标题关闭时,还有什么方法可以继续接收键盘输入?

Pau*_*son 5

默认情况NSWindowfalsecanBecomeKeyWindow如果窗口没有标题栏,则实例从返回。以下引用来自NSWindow类参考中的相关部分。

如果此方法返回false,则放弃使窗口成为键窗口的尝试。在NSWindow若窗口有一个标题栏或调整大小吧,否则为false实现返回true。

因此,要获得该行为,您需要子类化NSWindow,然后true从返回canBecomeKeyWindow