NSTextField:公开其Copy和Paste方法

时间:2013-04-01 18:10:39

标签: copy paste nstextfield fieldeditor

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

我想也许TextField的字段编辑器没有与窗口委托共享,但我做了一些测试,我看到当我输入控件时,那些字段编辑器是相同的 - 非常奇怪。

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

2 个答案:

答案 0 :(得分:3)

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

如何解决:

每个文本文件都有一个小孩作为一个孩子连接它。 (ps不是程序员。我称之为孩子)

enter image description here

单元格有一个实现自定义字段编辑器的方法,名为fieldingitorforview

class cell: NSTextFieldCell {

    override func fieldEditorForView(aControlView: NSView) -> NSTextView? {
        return ESPasteView()
    }
}

此功能允许您插入自己的自定义nstextview

这是我的自定义nstextview

class ESPasteView: NSTextView, NSTextViewDelegate {

    override func drawRect(dirtyRect: NSRect) {
        super.drawRect(dirtyRect)
    }

    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指出了现场编辑

答案 1 :(得分:0)

也许你可以看看NSTextField的:

- (BOOL)writeSelectionToPasteboard:(NSPasteboard *)pboard type:(NSString *)type;
- (BOOL)readSelectionFromPasteboard:(NSPasteboard *)pboard type:(NSString *)type;

这将允许您拦截呼叫自定义响应。