【问题标题】:Perform action on Command-Enter with NSTextView with Swift使用 Swift 使用 NSTextView 对 Command-Enter 执行操作
【发布时间】:2015-09-27 06:39:31
【问题描述】:

NSTextField 可以连接到IBAction,并在用户按下回车键时调用它。

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

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

【问题讨论】:

  • 什么样的动作?只有一个按钮或菜单项的等效键是⌘↩有意义吗?
  • @jtbandes,这解决了我的问题,但并没有真正回答我原来的问题,似乎它不应该是公认的答案。

标签: swift cocoa nstextview appkit


【解决方案1】:

您可以覆盖 keyDown 事件并检查是否返回键代码 == 36(返回键)或键代码 == 76(输入键)和 modifierFlags = 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")
        }
    }
}

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 2018-09-07
    • 2017-09-10
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多