gpt4 book ai didi

copy - NSTextField:公开其复制和粘贴方法

转载 作者:行者123 更新时间:2023-12-04 03:36:56 27 4
gpt4 key购买 nike

我正在尝试在其窗口委托(delegate)中访问 NSTextField 实例的复制、剪切和粘贴方法,以便我可以自定义这些方法。我发现与 tableViews 和 textViews 不同,文本字段的复制、粘贴和剪切操作在委托(delegate)中没有响应。我的理解是所有文本控件共享窗口的字段编辑器,但情况似乎并非如此。

我想也许 TextField 的字段编辑器没有与窗口委托(delegate)共享,但是我做了一些测试,我发现当我在控件中输入时,那些字段编辑器是相同的——非常奇怪。

我目前的解决方法是使用 NSTextView 的子类实例,其中复制和粘贴操作方法会根据需要进行响应。然而,这有其自身的问题,我希望有某种方法可以让 NSTextFields 按预期工作。

最佳答案

nstextfield 没有复制和粘贴功能。这些只能在 nstextview 中找到。问题在于,当编辑文本字段时,它会在编辑期间打开一个名为 fieldeditor 的 TextView ,并将其设置为第一响应者。

如何解决:

每个文本字段都有一个单元格作为子单元与其相连(在图片中称为 cell 但应该更恰本地命名,例如 CustomTextEditor):

enter image description here

该单元格有一个用于实现名为 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)
}

}

归功于:

How to disable context menus with right mouse click in an NSTextField (Cocoa)?

和指出现场编辑的 Ken Thomases。

关于copy - NSTextField:公开其复制和粘贴方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15748945/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com