我想在NSViewController中检测键盘输入。 如果用户按下某些键然后按ENTER / RETURN,则执行多个操作。
我已经检查过keyDown是否合适。但是,只要用户按下某个键,我就会收到一个事件。
我也使用NSTextField,将其设置为隐藏并让它具有焦点。 但也许还有其他更好的解决方案。
有什么想法吗?
由于
答案 0 :(得分:0)
我终于得到了一个我喜欢的解决方案。 首先,它与任何隐藏的UI元素没有任何关系,而是让viewcontroller检测键盘输入。
var monitor: Any?
var text = ""
override func viewDidLoad() {
super.viewDidLoad()
self.monitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown, handler: myKeyDownEvent)
}
override func viewWillDisappear() {
//Clean up in case your ViewController can be closed an reopened
if let monitor = self.monitor {
NSEvent.removeMonitor(monitor)
}
}
// Detect each keyboard event
func myKeyDownEvent(event: NSEvent) -> NSEvent {
// keyCode 36 is for detect RETURN/ENTER
if event.keyCode == 36 {
print(text)
text = ""
} else {
text.append( event.characters! )
}
return event
}