Objective-C:NSStatusBar左右键单击

Mat*_*zuk 6 objective-c nsstatusitem

如何检测左键或右键单击状态栏图标,然后根据单击的鼠标键(触控板)进行一些操作?

我用:

  _statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
  [_statusItem setMenu:menu];
  [_statusItem setHighlightMode:YES];
Run Code Online (Sandbox Code Playgroud)

生成statusBar图标

Nic*_*ore 13

要检测当前按下的鼠标按钮,您可以使用[NSEvent pressedMouseButtons].

要检测单击的状态栏图标,可以检测出现的菜单.在菜单打开之前,它会向其委托发送menuWillOpen:消息(如果有的话).所以实现这样的事情:

- (void)menuWillOpen:(NSMenu *)menu
{
  NSLog(@"%d",[NSEvent pressedMouseButtons]);
}
Run Code Online (Sandbox Code Playgroud)

您还需要设置菜单的委托,例如

[menu setDelegate:self];
Run Code Online (Sandbox Code Playgroud)