作者mactaris (mactaris)
看板MacDev
标题Re: [问题] NSStatusItem on system status bar
时间Fri Oct 5 13:46:51 2012
※ 引述《zonble (zonble)》之铭言:
: ※ 引述《uranusjr (←这人是超级笨蛋)》之铭言:
: : 我的 status bar icon 被按下之後会跳出一个 NSMenu
: : 这个 menu 的其中一个 NSMenuItem 会产生一个 floating window
: : 我想把这个 window 放在该 NSMenuItem 的旁边, 可是不知道要怎麽算它的位置
: 我不太确定你的 floating window 是怎样,但是照这个描述,
: 这个 floating window 很像是这个 menu item 的 submenu,
: 但是 submenu 里头出现的东西是你的一些 custom controls。
: 如果是这样的话,那就直接建一个 submenu 就好,然後 submenu
: 里头就只设一个 menu item,由於 NSMenuItem 可以透过 setView:
: 设定内容,就把你的 custom controls 放进某个 view 里头,
: 再把这个 view 设定成 menu item 的 view。
一般而言这个需求就是显示一个 floating window (10.7 以後可以用 NSPopup),
指出 menubar 上有个 status bar icon,就像 dropbox 首次安装时会提醒 user
dropbox 是安装在 menubar 上。
有些 user 死活都找不到你的 status bar icon ,偏偏你的 app 就是设计成 manubar
常驻,所以就准备吃一颗星的评价吧 XD。
解决方法就是建一个 custom view ,把 status bar icon 放在 custom view 里面,
再把 custom view 指定给 NSStatusItem ,这样就可以得到 custom view 在萤幕的
位置,再去计算 menu item 的宽高之类的,应该就可以得到原 po 想要的 menu item
位置。
有个麻烦是一旦使用 custom view ,NSStatusItem 就不帮你处理 mouse event 了,
所以你的 custom view 要自己处理 mouse down ,自己 popUpStatusItemMenu,自己
highlight status bar icon,当 menu 消失时,也要自己 un-highlight status bar
icon ,为了一件小事,就得大动干戈...Apple 很欠扁!那些白目赏一颗星评价的家伙
更是欠扁 XD...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.111.97