22

何らかの理由で、NSTextField を使用して何かを貼り付けることはできませんがCommand+V、右クリックして [貼り付け] をクリックすると貼り付けることができます。なぜこれが起こっているのですか?どうすれば修正できますか?

4

4 に答える 4

9

NSMenu メイン メニューの [貼り付け] ボタンをファーストレスポンダーのpaste:コマンドにリンクすることで修正しました。

于 2010-01-14T06:58:12.677 に答える
4

アプリケーションのメイン メニューから [編集] > [貼り付け] を選択するとどうなりますか?

于 2010-01-13T07:57:33.823 に答える
4

あなたは:

  • メイン メニューの前に応答する任意のコントロール (NSButtons、NSMenuItems、...) に相当するキーを割り当てます。

- また -

  • メニュー全体を削除する
  • NSMenuItem の編集
  • Paste NSMenuItem 「Paste」ショートカットは、「Paste」NSMenuItem と同等のキーです。
于 2010-01-13T08:37:42.440 に答える
2

これのおかげ で、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)
}

}

于 2020-11-23T09:39:58.523 に答える