objective-c - Cocoa App 中的 Shift + Return 键操作

标签 objective-c swift macos cocoa

我有一个 NSTextView,每当用户按下 Shift + Return 键时,我应该执行一个操作。

但问题是我不知道如何知道用户是否按下了 Return 键。

我已经使用这段代码来了解用户是否按下了 Shift 键。

override func flagsChanged(theEvent: NSEvent) {

        switch theEvent.modifierFlags.intersect(.DeviceIndependentModifierFlagsMask)
        {
        case NSEventModifierFlags.ShiftKeyMask :
            print("shift key is pressed")
        case NSEventModifierFlags.ControlKeyMask:
            print("control key is pressed")
        case NSEventModifierFlags.AlternateKeyMask :
            print("option key is pressed")
        case NSEventModifierFlags.CommandKeyMask:
            print("Command key is pressed")
        case NSEventModifierFlags.FunctionKeyMask:
            print("Function key is pressed")

        default:
            print("no key or more than one is pressed")
        }
    }

但是NSEventModifierFlags中没有返回键的选项。

让我知道你的想法?我将如何解决这个问题?

最佳答案

我建议您使用以下方法来获取 keyCode 以了解它何时是换档、返回键或您想要检测的任何内容,以防拥有所需的键,执行您的逻辑。

import Cocoa

class YourWindow: NSWindow {
    override func keyDown(event: NSEvent) {
        super.keyDown(event)
        print("Caught a key down: \(event.keyCode)!")
    }
}

您还可以使用 keyUp 事件

关于objective-c - Cocoa App 中的 Shift + Return 键操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38849797/

相关文章:

ios - UITableViewCell 内多个堆栈 View 内的多行标签

swift - 使用 removeAtIndex 在 Swift 中索引超出范围

node.js - firebase-tools 无法通过 macOS 上的终端安装加载

git - macOS Mojave : invalid active developer path after updating to Mojave from High Sierra

ios - 将用户输入限制为 Swift 中的有效十进制数

objective-c - CNContact :migration from ABAddressBook : iOSLegacyIdentifier + lastModifcationDate

ios - - (id) 来自 Swift 中的 Obj-C Lib?

macos - Mac App Store 代码签名资源信封是否始终为版本 1?

objective-c - UIAlertController:supportedInterfaceOrientations 被递归调用

objective-c - 将 NSImageView 中点击的 NSPoint 转换为更正底层 NSBitmapImageRep 中的像素坐标