如何将重点放在NSMenu上(让它获得关键事件)?

时间:2010-08-26 14:35:28

标签: cocoa nsmenu nsmenuitem arrow-keys

我有一个带有NSSearchField和菜单项的状态菜单。当搜索字段处于活动状态且用户按下&向下箭头,我想开始菜单跟踪,即用户可以在菜单项之间使用箭头键移动。我可以捕获moveUp和moveDown选择器。如何使菜单成为关键响应者?

谢谢,

纳瓦

1 个答案:

答案 0 :(得分:0)

在mouseUp / Down上触发kCGEventMouseMoved事件。显示/隐藏您选择的光标...... 这里的主要挑战是找到正确的原点(全局鼠标点)。有人知道如何找到NSMenuItem rect吗?

CGEventRef mouseEvent = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved, NSPointToCGPoint(globalOrigin) , kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, mouseEvent);
CFRelease(mouseEvent);