gpt4 book ai didi

macos - 如何检测在 NSPressGestureRecognizer 事件期间是否按下了 CMD 或 Shift 键?

转载 作者:行者123 更新时间:2023-12-03 17:20:13 24 4
gpt4 key购买 nike

在按下手势识别器的处理程序中,我尝试找出是否已按下 CMD 或 Shift,如下所示:

- (void)handlePress:(NSPressGestureRecognizer*)gr {
NSEventModifierFlags flags = [[NSApp currentEvent] modifierFlags];
if (flags & NSCommandKeyMask) {
NSLog(@"CMD pressed");
}
}

但是,该标志只能在 keyDown 或 keyUp 事件处理程序方法中正确设置。 NSGestureRecognizer 似乎没有公开事件对象,因此我从 NSApp 获取 currentEvent 。我错过了什么?

最佳答案

您可以使用 NSGestureRecognizerDelegate 来代替子类化,如下所示:

extension ViewController : NSGestureRecognizerDelegate
{
func gestureRecognizer(_ gestureRecognizer: NSGestureRecognizer,
shouldAttemptToRecognizeWith event: NSEvent) -> Bool {
return event.modifierFlags.contains(.command)
}
}

从技术上讲,这只会识别鼠标按下时按住的修饰键,但从 UI 的角度来看,这可能正是您想要的。

关于macos - 如何检测在 NSPressGestureRecognizer 事件期间是否按下了 CMD 或 Shift 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com