使用Swift的NSTextView在Command-Enter上执行操作

问题描述 投票:1回答:1

NSTextField可以连接到IBAction,并在用户按下Enter键时将其调用。

当用户按下Command-Enter(或Option-Enter等)时,如何使用NSTextView执行操作?

阅读文档使我认为这与doCommandBySelector:有关,但我找不到任何示例。

swift cocoa nstextview appkit
1个回答
2
投票

您可以重写keyDown事件,并检查返回键代码== 36(返回键)或键代码== 76(输入键)和修饰符标记= CommandKeyMask。尝试如下:

import Cocoa

class ViewController: NSViewController {
    @IBOutlet weak var textView: NSTextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
            self.keyDown(with: $0)
            return $0
        }
    }
    override func keyDown(with event: NSEvent) {
        super.keyDown(with: event)
        if event.keyCode == 36 && event.modifierFlags.intersection(.deviceIndependentFlagsMask) == .command {
            print("command-return pressed")
        }
        if event.keyCode == 76 && event.modifierFlags.intersection(.deviceIndependentFlagsMask) == .command {
            print("command-enter pressed")
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.