【问题标题】:macOS - Is there a way to know which textfield triggered performKeyEquivalent?macOS - 有没有办法知道哪个文本字段触发了 performKeyEquivalent?
【发布时间】:2023-03-03 04:19:01
【问题描述】:

我创建了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 (?)

有什么想法吗?

【问题讨论】:

    标签: ios swift tags nstableview nstextview


    【解决方案1】:

    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)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      相关资源
      最近更新 更多