Re: [問題] NSStatusItem on system status bar

看板MacDev作者 (mactaris)時間11年前 (2012/10/05 13:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1GRdHE6V (MacDev)
文章代碼(AID): #1GRdHE6V (MacDev)