nstextfield 没有复制和粘贴功能。这些只能在 nstextview 中找到。问题是,当编辑文本字段时,它会在编辑过程中打开一个名为 fieldeditor 的文本视图,并将其设置为第一响应者。
怎么解决:
每个文本字段都有一个连接到它的子单元格(cell
在图片中称为但应该更恰当地命名,例如CustomTextEditor
):
该单元格有一个实现自定义字段编辑器的方法,称为fieldEditorForView
:
class cell: NSTextFieldCell {
var editor: NSTextView
override func fieldEditorForView(aControlView: NSView) -> NSTextView? {
if editor == nil {
editor = ESPasteView()
}
return editor
}
}
上述函数允许您提供自己的自定义NSTextView
子类:
class ESPasteView: NSTextView, NSTextViewDelegate {
override func paste(sender: AnyObject?) {
Swift.print("user tries to paste")
super.pasteAsPlainText(nil)
}
}
归功于:
如何在 NSTextField (Cocoa) 中单击鼠标右键禁用上下文菜单?
和指出现场编辑的 Ken Thomases。