- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够设置 keyEquivalent
的NSMenuItem
基于NSString
,例如:CMD+R、ALT+SHIFT+D等
为此,我在 NSString
中创建了一个方法类别如下(包括调试 NSLog
):
- (NSDictionary*)toKeyEquivalent
{
NSMutableDictionary* result = [NSMutableDictionary dictionary];
NSArray* parts = [self componentsSeparatedByString:@"+"];
NSLog(@"parts :%@",parts);
if ([[parts objectAtIndex:0] isEqualToString:@""])
{
return [NSDictionary dictionaryWithObjectsAndKeys:@"",@"key",[NSNumber numberWithInt:0],@"mask", nil];
}
else
{
[result setValue:[parts lastObject] forKey:@"key"];
int mask = 0;
for (NSString* p in parts)
{
if ([p isEqualToString:@"CMD"])
{
NSLog(@"cmd");
mask |= NSCommandKeyMask;
}
else if ([p isEqualToString:@"SHIFT"])
{
NSLog(@"shift");
mask |= NSShiftKeyMask;
}
else if ([p isEqualToString:@"CTRL"])
{
NSLog(@"ctrl");
mask |= NSControlKeyMask;
}
else if ([p isEqualToString:@"ALT"])
{
NSLog(@"alt");
mask = NSAlternateKeyMask;
}
}
[result setValue:[NSNumber numberWithInt:mask] forKey:@"mask"];
return result;
}
}
现在,我正在使用 CMD+R 进行测试。
NSLog 输出是:
2012-04-03 10:36:19.051 App[4654:903] parts :( CMD, R )
2012-04-03 10:36:19.052 App[4654:903] cmd
2012-04-03 10:36:19.052 App[4654:903] keyEq : { key = R; mask = 1048576; } - for Run
看起来不错; mask=1048576
意味着 1<<20
等于 NSCommandKeyMask
.
换句话说,似乎等效键(Command-R)已被正确解释。
奇怪的是,当菜单项最终出现时,旁边出现的等效键是“Command-SHIFT- R“....:-S
这是为什么呢?有什么想法吗?
最佳答案
你传入的是r
还是R
?我认为如果你向它传递一个大写字符串,它会自动添加类次要求。
关于objective-c - 在 NSMenuItem 上使用 keyEquivalent 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989146/
在carbon/cocoa中,是否可以将performKeyEquivalent之类的内容发送到当前的关键窗口?我想向用户激活的任何应用程序发送一个按键事件。 谢谢! 最佳答案 是的,您可以使用 CG
OmniFocus 有一个 Cocoa 服务,允许您根据所选项目创建任务。 它有一个首选项,允许您设置触发服务的键盘快捷键。这不仅仅是一个全局热键,它是一个显示在菜单中的真正的服务。 您可以使用键盘快
在我的应用程序的主菜单中,我有一个菜单项,我想将其设置为快捷键 alt+“减号”。我能够在 IB 中设置等效 key ,并且它会按预期触发,但运行应用程序时它真的很难看: 即使在 Interface
我正在尝试以编程方式为我的 NSMenuItem 对象(在 MonoMac 中)设置 KeyEquivalent 和 KeyEquivalentModifierMask。对于字母数字键(“a-z”、“
我想为 NSMenuItem(在应用程序主菜单中)设置等效键“”(空格)而没有任何修饰符。 如下来自文档: For example, in an application that plays medi
在上下文菜单中,我希望 ⌘→ 成为等效键。 在此support document ,你可以这样设置: unichar arrowKey = NSLeftArrowFunctionKey; [butto
如何清除 NSButton 的 keyEquivalent ? 我已经尝试过: [theButton setKeyEquivalent:nil]; 但是好像不太对啊!谢谢 最佳答案 您要查找的命令是:
我已将自定义 NSView 设置为 NSMenuItem 来执行我自己的绘图和渲染。然而,分配给 NSMenuItem 的“keyEquivalent”似乎没有响应。我知道绘图和 Action 处理需
我希望能够设置 keyEquivalent的NSMenuItem基于NSString ,例如:CMD+R、ALT+SHIFT+D等 为此,我在 NSString 中创建了一个方法类别如下(包括调试 N
如何在 Swift 中将 NSButton 的 keyEquivalent(字符串类型)设置为向下箭头键? NSDownArrowFunctionKey 是一个 Int。 最佳答案 这page在 Ap
我是一名优秀的程序员,十分优秀!