簡體   English   中英

無法將 (Command+V) 粘貼到 NSTextField 中

[英]Can't paste (Command+V) into an NSTextField

出於某種原因, NSTextField 不允許我使用Command+V將任何內容粘貼到其中,但如果我右鍵單擊並單擊“粘貼”,我可以將其粘貼到其中。 為什么會發生這種情況,我該如何解決?

我通過將 NSMenu 主菜單中的“粘貼”按鈕鏈接到第一響應者的paste:命令來修復它。

當您從應用程序的主菜單中選擇“編輯 > 粘貼”時會發生什么?

你有沒有:

  • 分配與在主菜單之前響應的任何控件(NSButtons,NSMenuItems,...)等效的鍵

- 要么 -

  • 刪除整個菜單
  • 編輯 NSMenuItem
  • Paste NSMenuItem “Paste”快捷方式是“Paste” NSMenuItem 的關鍵等價物

感謝這個使復制和粘貼與 NSTextField 一起工作

final class EditableNSTextField: NSTextField {

private let commandKey = NSEvent.ModifierFlags.command.rawValue
private let commandShiftKey = NSEvent.ModifierFlags.command.rawValue | NSEvent.ModifierFlags.shift.rawValue

override func performKeyEquivalent(with event: NSEvent) -> Bool {
    if event.type == NSEvent.EventType.keyDown {
        if (event.modifierFlags.rawValue & NSEvent.ModifierFlags.deviceIndependentFlagsMask.rawValue) == commandKey {
            switch event.charactersIgnoringModifiers! {
            case "x":
                if NSApp.sendAction(#selector(NSText.cut(_:)), to: nil, from: self) { return true }
            case "c":
                if NSApp.sendAction(#selector(NSText.copy(_:)), to: nil, from: self) { return true }
            case "v":
                if NSApp.sendAction(#selector(NSText.paste(_:)), to: nil, from: self) { return true }
            case "z":
                if NSApp.sendAction(Selector(("undo:")), to: nil, from: self) { return true }
            case "a":
                if NSApp.sendAction(#selector(NSResponder.selectAll(_:)), to: nil, from: self) { return true }
            default:
                break
            }
        } else if (event.modifierFlags.rawValue & NSEvent.ModifierFlags.deviceIndependentFlagsMask.rawValue) == commandShiftKey {
            if event.charactersIgnoringModifiers == "Z" {
                if NSApp.sendAction(Selector(("redo:")), to: nil, from: self) { return true }
            }
        }
    }
    return super.performKeyEquivalent(with: event)
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM