【问题标题】:Swift XCode macOS NSTextField - Enabling shortcuts Copy/Paste without menu [duplicate]Swift XCode macOS NSTextField - 启用快捷方式复制/粘贴没有菜单[重复]
【发布时间】:2021-06-06 00:04:44
【问题描述】:

我正在 macOS 上通过 XCode 开发我的应用程序

我没有故事板,我删除了菜单。

我只使用AppDelegate

NSTextField 没有菜单不允许使用快捷键 [CMD+C] [CMD+V]。

我想在不启用菜单的情况下启用它,但我不知道如何。

编辑

我正在尝试使用这个:

final class EditableNSTextField: NSTextField {
    private let commandKey = NSEventModifierFlags.command.rawValue
    private let commandShiftKey = NSEventModifierFlags.command.rawValue | NSEventModifierFlags.shift.rawValue
    override func performKeyEquivalent(with event: NSEvent) -> Bool {
        if event.type == NSEventType.keyDown {
            if (event.modifierFlags.rawValue & NSEventModifierFlags.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 & NSEventModifierFlags.deviceIndependentFlagsMask.rawValue) == commandShiftKey {
                if event.charactersIgnoringModifiers == "Z" {
                    if NSApp.sendAction(Selector(("redo:")), to:nil, from:self) { return true }
                }
            }
        }
        return super.performKeyEquivalent(with: event)
    }
}

【问题讨论】:

  • 那会非常混乱;键盘快捷键是菜单的一部分,没有任何菜单的快捷键没有多大意义。
  • @Caleb “那会非常混乱;键盘快捷键是菜单的一部分,没有任何菜单的快捷键没有多大意义”。 ???我不是菜单爱好者。我正在制作一个没有菜单的应用程序。有 CMD+C CMD+V 选项有意义吗?请回复回答。从争论中走出来,就像打败salumi一样有帮助。
  • @Willeke - “keyDown(with: event) 是一种方法。你必须在 performKeyEquivalent 中检查 event.type 吗?”我不是这种语言的狗,但这就是我正在寻找的东西。我没有密钥,也不知道如何实现它。我已经声明了@IBOutlet var txFileURL: EditableNSTextField!,但不要woooooooorksss。 CMD+C CMD+V怎么做?
  • @Willeke - 我忘记在 xib 文件中设置文本字段的类...我真的不知道 stackoverflow.com/a/44364889/2321140 现在我的键盘快捷键可以工作了,不仅仅是我的老鼠 ????。我以前没有键盘。在我的脑海里只有氧气??????????。 Tnkz 4 ya cmets ????????

标签: xcode macos keyboard-shortcuts


【解决方案1】:

if event.type == keyDown(with: event) {

编译器在这里抱怨是因为您将event.type 与返回类型为void 的函数的结果进行比较。我怀疑您的意思是与NSEvent.EventType.keyDown 进行比较,或者简称为.keyDown

【讨论】:

  • "编译器在这里抱怨,因为您将 'event.type' 与返回类型为 'void' 的函数的结果进行比较。我怀疑你的意思是与 'NSEvent.EventType 进行比较。 keyDown',或者简称为'.keyDown'。”你也可以删除这个修改过的代码。 Tnks 一样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
相关资源
最近更新 更多