macOS-有没有办法知道哪个文本字段触发了performKeyEquivalent?

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

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

我在该视图上有两个NSTableViews。这些子视图具有NSTextField个。

我开始编辑这些文本字段之一,然后按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(?)

任何想法?

ios swift tags nstableview nstextview
1个回答
0
投票

[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)
}
© www.soinside.com 2019 - 2024. All rights reserved.