【问题标题】:NSMenu's mouse over eventNSMenu 的鼠标悬停事件
【发布时间】:2011-08-25 23:57:55
【问题描述】:

我长期使用NSMenu和NSStatusItem在状态栏上显示自定义菜单是这样的:

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:18] retain]; [statusItem setImage:[NSImage imageNamed:@"myIcon"]]; [statusItem setMenu:myMenu]; [statusItem setHighlightMode:NO]; ...

点击它的图像图标就可以正常工作。 但我注意到,位于状态栏上的苹果菜单可以通过鼠标移动简单地触发,如机场菜单、电源菜单、语言菜单和日期/时间菜单。 当您鼠标走过时,它们都会自动弹出。 他们是怎么得到的?

我已经通过“mouseEntered”事件检查了 NSView 的“添加跟踪矩形”,但事情并没有我想的那么困难。

有什么建议吗?

【问题讨论】:

    标签: mouseover nsmenu


    【解决方案1】:

    我认为statusItem是不支持的鼠标事件,但是你可以给statusItem设置一个视图并重写mouse even方法来支持鼠标事件,就像这样:

    statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
      NSButton *nb = [[NSButton alloc] init]; 
      [nb setImage:image];
      [nb setAction:@selector(statusItemClick:)];  
      [_statusItem setView:nb];
    

    这里只是将视图设置为状态项的示例,如果您想支持鼠标事件,您的视图必须扩展相同的视图并创建 NSTrackingArea 并实现 moveMoved、mouseEntered 和 mouseExited 方法(或任何您想要的方法)

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2012-10-12
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      相关资源
      最近更新 更多