Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
swift中检测NSViewController中键盘输入的最佳策略_Swift_Xcode_Macos_Keyboard Events_Nsviewcontroller - Fatal编程技术网

swift中检测NSViewController中键盘输入的最佳策略

swift中检测NSViewController中键盘输入的最佳策略,swift,xcode,macos,keyboard-events,nsviewcontroller,Swift,Xcode,Macos,Keyboard Events,Nsviewcontroller,我想检测NSViewController中的键盘输入。 其想法是,如果用户按下某些键,然后按ENTER/RETURN,则执行多个操作 我已经检查了键控是否是一种合适的方式。但每当用户按下某个键时,我都会收到一个事件 我还考虑过使用NSTextField,将其设置为hidden并使其具有焦点。 但也许还有其他更好的解决办法 有什么想法吗 谢谢我终于找到了我喜欢的解决方案。 首先,它与任何隐藏的UI元素无关,而是让viewcontroller检测键盘输入 var monitor: Any? var

我想检测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
}

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