首页 > 解决方案 > macOS - 有没有办法知道哪个文本字段触发了 performKeyEquivalent?

问题描述

我创建了一个子类NSView并将其分配给主 ViewController 的视图。

我有两个NSTableViews观点。这些子视图有NSTextFields。

我开始编辑这些文本字段之一并按Cmd C

performKeyEquivalent被触发。

我怎么知道是哪个文本字段触发了它?

我已经添加了这一行

override func performKeyEquivalent(with event: NSEvent) -> Bool {
  super.performKeyEquivalent(with:event)
  let firstResponder = self.window?.firstResponder

但正如预期的那样,它没有帮助。

macOS 告诉我 firstResponder 是一个NSTextView,但我在项目上没有文本视图。

tag也没有帮助。我的 tableViews 的单元格的标签等于 100、200 和 300,但是

let tag = (firstResponder! as! NSTextView).tag

给我-1(?)

有任何想法吗?

标签: iosswifttagsnstableviewnstextview

解决方案


NSTextField是自己的编辑的代表NSTextView,也就是说,所以这里应该怎么走

override func performKeyEquivalent(with event: NSEvent) -> Bool {

    if let editor = self.window?.firstResponder as? NSTextView, 
       let textField = editor.delegate as? NSTextField {             
         print("Identified by: \(textField.tag)")
    }

    return super.performKeyEquivalent(with:event)
}

推荐阅读