macOS - 有没有办法知道哪个文本字段触发了 performKeyEquivalent?
macOS - Is there a way to know which textfield triggered performKeyEquivalent?
我创建了 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
也帮不上忙。我的 tableView 的单元格的标签等于 100、200 和 300,但是
let tag = (firstResponder! as! NSTextView).tag
给我 -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)
}
我创建了 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
也帮不上忙。我的 tableView 的单元格的标签等于 100、200 和 300,但是
let tag = (firstResponder! as! NSTextView).tag
给我 -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)
}