我在一个非常键盘密集型的应用程序上工作。双手放在键盘上。没有手放在鼠标上。
用户可以通过键盘弹出上下文菜单,选择一个项目,最后按 Enter。
[NSMenu popUpContextMenu]
显示菜单而不突出显示任何项目。用户必须按一次 arrow_down 才能突出显示第一项。
我的一位朋友观察到每次使用此菜单时都必须按 arrow_down,并建议我删除此步骤,以便在弹出菜单时始终突出显示第一项。
我怀疑它需要碳破解?
如何以编程方式突出显示第一项?
我使用此代码弹出一个菜单。
NSEvent* event = [NSEvent otherEventWithType:NSApplicationDefined
location:location
modifierFlags:0
timestamp:0
windowNumber:[[self window] windowNumber]
context:[[self window] graphicsContext]
subtype:100
data1:0
data2:0
];
[NSMenu popUpContextMenu:menu withEvent:event forView:self];
更新:我尝试在 popUpContextMenu 之后立即向我的应用发送一个 arrow_down 事件,但是当菜单可见时该事件不会执行。(该事件在菜单消失后执行)。
unichar code = NSDownArrowFunctionKey;
NSString* chars = [NSString stringWithFormat: @"%C", code];
NSEvent* event = [NSEvent keyEventWithType:NSKeyDown location:location modifierFlags:0 timestamp:0 windowNumber:[[self window] windowNumber] context:[[self window] graphicsContext] characters:chars charactersIgnoringModifiers:chars isARepeat:NO keyCode:code];
[NSApp sendEvent:event];