我正在尝试使用spriteKit构建动画,并且可以通过键盘控制(箭头键可以加速,减速,回放动画)。
此外,我需要此应用程序具有完全透明的背景,我使用以下方法管理:
scene?.backgroundColor = NSColor.clearColor()
以及:
self.window.opaque = false
到目前为止一切正常,我可以控制动画。但是一旦我尝试通过取消选中右侧面板上的窗口框来删除Interface Builder中的标题栏,键盘捕获就会停止工作。
keyDown:
不再被调用了,当你的mac告诉你键盘输入不是一个选项时,我得到'dong'声音的特征。即使我在菜单栏上仍然有我的应用程序的名称。
当标题关闭时,还有什么方法可以接收键盘输入吗?
答案 0 :(得分:4)
如果窗口没有标题栏,默认情况下NSWindow
个实例会从false
返回canBecomeKeyWindow
。以下引用来自NSWindow
类引用中的相关部分。
如果此方法返回false,则尝试使窗口成为关键窗口。如果窗口有标题栏或调整大小条,则
NSWindow
实现返回true,否则返回false。
因此,要获得您需要继承NSWindow
后的行为,并从true
返回canBecomeKeyWindow
。
答案 1 :(得分:1)
正如Paul Pattersion所指出的那样(接受了答案),诀窍是将NSWindow子类化,以便为canBecomeKeyWindow返回true。对于任何想知道如何做的人,这里是代码:
import Cocoa
class CustomWindow: NSWindow {
override var canBecomeKeyWindow: Bool {
get { return true }
}
}