我想在我的NSViewController中检测键盘输入。
这样做的目的是,如果用户按下某些键,然后按ENTER/RETURN,就可以执行多个操作。
我已经检查了下键是否合适。但只要用户按下一个键,我就会收到一个事件。
我还使用了一个NSTextField,将其设置为hidden并让它具有焦点。
但也许还有其他更好的解决办法。
有什么想法吗?
谢谢

最佳答案

我终于找到了我喜欢的解决办法。
首先,它与任何隐藏的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
}

关于swift - 快速检测NSViewController中键盘输入的最佳策略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46011688/

10-12 14:42