gpt4 book ai didi

cocoa - NSMenuItem KeyEquivalent ""(空格)错误

转载 作者:行者123 更新时间:2023-12-03 16:05:20 33 4
gpt4 key购买 nike

我想为 NSMenuItem(在应用程序主菜单中)设置等效键“”(空格)而没有任何修饰符。
如下来自文档:

For example, in an application that plays media, the Play command may be mapped to just “ ” (space), without the command key. You can do this with the following code:

[menuItem setKeyEquivalent:@" "];

[menuItem setKeyEquivalentModifierMask:0];


Key Equivalent 设置成功,但它不起作用。当我按下没有修饰符的“Space”键时,什么也没有发生,但是当我按下带有“Fn”修饰键的“Space”键时它会起作用。
我需要使用没有修饰符的“空间”。请任何帮助!

最佳答案

我有同样的问题。我没有仔细研究过,但据我所知,空格键“看起来”不像 Cocoa 的键盘快捷键,所以它被路由到 -insertText: .我的解决方案是将 NSWindow 子类化,在它上升到响应者链时捕获它(大概你可以子类化 NSApp),然后将它明确发送到菜单系统:

- (void)insertText:(id)insertString
{
if ([insertString isEqual:@" "]) {
NSEvent *fakeEvent = [NSEvent keyEventWithType:NSKeyDown
location:[self mouseLocationOutsideOfEventStream]
modifierFlags:0
timestamp:[[NSProcessInfo processInfo] systemUptime]
windowNumber:self.windowNumber
context:[NSGraphicsContext currentContext]
characters:@" "
charactersIgnoringModifiers:@" "
isARepeat:NO
keyCode:49];
[[NSApp mainMenu] performKeyEquivalent:fakeEvent];
} else {
[super insertText:insertString];
}
}

关于cocoa - NSMenuItem KeyEquivalent ""(空格)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11155239/

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