监听Mac OSX任务栏鼠标点击事件

为什么要监听任务栏的鼠标点击事件呢?不知道你有没有发现这么一东东:苹果系统任务栏自带的图标都有一个共通点就是,当你在任务栏的空白处点一下的时候,你再移到这些图标上的时候,它会自动弹出菜单。而在任务栏的随便哪个地方再点一下,包括图标上,鼠标再移到这些菜单上的时候,你会发现这些菜单不会再自动弹出来了。无独有偶,不光任务上的图标如此,菜单栏也有同样的效果。很人性化哟。发现这个东东以后,我写的几个小工具都加上了鼠标进入自动弹出来菜单的效果。但是比系统的却少了一步,以至于每次鼠标移上去都会弹出菜单,有点招人烦了。于是网上搜索半天,思路换了半天,最终算是找到了一个临时的解决办法:既然系统没有专门的api来实现的这个问题,那咱们自已实现好了,我自已监听鼠标的点击,然后再判断坐标是不是在任务栏上,然后就按我原理实现的走,于是就有了这个ugly的解决文案。
具体实现:

  [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDownMask|NSRightMouseDownMask
                                         handler:^(NSEvent *event) {
                                           switch (event.type) {
                                             case NSLeftMouseDown:
                                               if (event.locationInWindow.y > 780) {
                                                 needAutoShowMenu = !needAutoShowMenu;
                                               }
                                               
                                               break;
                                             case NSRightMouseDown:
                                               if (event.locationInWindow.y > 780) {
                                                 needAutoShowMenu = !needAutoShowMenu;
                                               }
                                               
                                               break;
                                             default:
                                               break;
                                           }
                                         }];

加了个中间变量needAutoShowMenu,然后在原来的处理方法通过判断这个变量来决定是否弹出菜单。
顺道提一下,更新了的小工具:
SleepScreen
Monitor

如果您用了上面两个小工具,不用重复下载,直接在他们菜单上点“检查更新”就ok了。

参考资料:
监听Mac OS X的全局鼠标事件


相关博文

    分享到:

About rainbird

IOS攻城狮
This entry was posted in Mac开发 and tagged , , , , , , , . Bookmark the permalink.

发表评论