如何检查 Swift 中当前是否按下了 Shift 键?

问题描述 投票:0回答:3

我试图检查函数运行时是否按下了 Shift 键。像这样的东西(但显然不是这个,这只是一个例子):

func doThisThing() {
    if Keyboard.shared.keyBeingPressed(.shift) { // < What I'm trying to figure out
        print("Doing this thing.")
    } else {
        print("You're not holding shift.")
    }
}

我尝试查找,但我所能找到的只是 keyDown/keyUp 事件,这在这种情况下不实用。

swift macos swiftui key shift
3个回答
4
投票
import AppKit

public class KeyboardHelper
{
    public static var optionKeyIsDown: Bool
    {
        let flags = NSEvent.modifierFlags
        return flags.contains(.option)
    }

    public static var shiftKeyIsDown: Bool
    {
        let flags = NSEvent.modifierFlags
        return flags.contains(.shift)
    }
}

0
投票

我已经很久没有做过这类事情了,但我似乎记得你需要设置一个 NSResponder 并监视 keyDown/keyUp 事件。然后,您将解析该事件以查找按下或释放的 Shift 键。

看起来还有一个函数 flagsChanged ,您可以实现该函数以在其中一个修饰键更改状态时收到通知。请参阅此主题:

如何检测Shift键已被按下?


0
投票

查看

NSEvent.modifierFlags

let shiftIsPressed = NSEvent.modifierFlags.contains(.shift)
© www.soinside.com 2019 - 2024. All rights reserved.