ios - macOS - 有没有办法知道哪个文本字段触发了 performKeyEquivalent?
问题描述
我创建了一个子类NSView
并将其分配给主 ViewController 的视图。
我有两个NSTableViews
观点。这些子视图有NSTextField
s。
我开始编辑这些文本字段之一并按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
(?)
有任何想法吗?
解决方案
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)
}
推荐阅读
- excel - 如果整个值包含在当前行中,则 Excel 删除上一行,并且 A 列以前的值也相同
- html - 在 pug/jade 中包含父元素
- python - 为字典元素分配名称
- ios - iOS Safari WebApp 在新窗口中打开链接
- c++ - C++ 继承:构造函数中的字符串构造
- android - 在 android 10 中访问文件时出现问题:- android studio
- vue.js - 获取多个嵌套项的计数
- c++ - 如何在 C++ 多线程中匹配处理时间和接收时间
- elasticsearch - 地理位置数据类型不是从弹簧数据弹性搜索创建的
- reactjs - React TypeScript - 将类型参数传递给标记的模板文字