我正在Xcode 7中编写Swift 2中的程序(对于OS X 10.11),我希望它(这是ViewController类)能够检测用户何时按下一个函数关键,特别是当应用程序在后台。我推翻acceptsFirstResponder
:Swift 2:检测功能按键
override var acceptsFirstResponder: Bool { return true }
,我已经实现了keyUp:
和keyDown:
:
override func keyDown(theEvent: NSEvent) {
print("keyDown:\n")
let ch: NSString = theEvent.charactersIgnoringModifiers!
if ch.length == 1 {
let char: Int = Int(ch.characterAtIndex(0))
if char == NSF7FunctionKey {
prevSong(NSNull())
}else if char == NSF8FunctionKey {
playPause(NSNull())
}else if char == NSF9FunctionKey {
nextSong(NSNull())
}else{
self.nextResponder?.keyDown(theEvent)
}
}else{
self.nextResponder?.keyDown(theEvent)
}
}
override func keyUp(theEvent: NSEvent) {
print("keyUp:\n")
self.nextResponder?.keyUp(theEvent)
}
我本来所有的代码,而不是keyUp:
,但我从来没有得到“的keyDown:”打印到控制台。在附注中,如果有人知道更好的方法来检测功能键,请这么说。
为什么不检测按键?
你为什么要在'keyDown'方法中调用'keyUp'方法? – Droppy
从代码仍然在'keyUp'方法中的错字 – Arc676
嗯......所以你发布的代码实际上并不是你正在运行的东西? – Droppy