我有一個應用程序出現在狀態欄項目上的彈出窗口。問題是,當您在全屏應用程序中單擊圖標時,然後將鼠標從菜單欄移開以單擊彈出窗口中的某些內容,菜單欄向上移動,彈出窗口也會移動。它很煩人。當我的彈出窗口打開時,如何防止菜單欄向下移動?
任何人都知道任何方式來解決這個問題?我試圖在彈出窗口中附加一個不可見的菜單,但是我無法使菜單看不見。
截圖爲清楚起見,惱人的部分是我揮一揮鼠標左右:
我有一個應用程序出現在狀態欄項目上的彈出窗口。問題是,當您在全屏應用程序中單擊圖標時,然後將鼠標從菜單欄移開以單擊彈出窗口中的某些內容,菜單欄向上移動,彈出窗口也會移動。它很煩人。當我的彈出窗口打開時,如何防止菜單欄向下移動?
任何人都知道任何方式來解決這個問題?我試圖在彈出窗口中附加一個不可見的菜單,但是我無法使菜單看不見。
截圖爲清楚起見,惱人的部分是我揮一揮鼠標左右:
彈出式窗口正在移動,因爲其父窗口是狀態項窗口,而當父窗口移動時,子窗口隨之移動。 (我調查此之前,我甚至不知道可可有父母和孩子的窗口。)我解決了這個代碼的問題顯示酥料餅後:
NSWindow *popoverWindow = self.popup.contentViewController.view.window;
[popoverWindow.parentWindow removeChildWindow:popoverWindow];
現在,菜單欄依然向上移動,但至少彈出窗口保持在同一個地方。
超級哈克方法:
自定義窗口,一些超高窗位,使它會出現在菜單欄上,然後在新窗口中添加一個透明的自定義視圖,以根據需要捕捉和處理/阻止鼠標點擊。
或者:
獲取酥料餅的使用,顯示和跟蹤/處理NSWindowWillMoveNotification
/NSWindowDidMoveNotification
窗口實例。
要麼使用Carbon events或觀賞的東西發生在菜單欄(NSStatusBarWindow
類型的窗口):
通知
NSWindowDidChangeOcclusionStateNotification
NSWindowDidMoveNotification
NSWindowWillCloseNotification
NSWindowDidCloseNotification
與類NSStatusBarWindow
的對象應該給你足夠的信息顯示或隱藏菜單欄添加適當的處理。
什麼是正確的處理?困難的部分沒有發現狀態項目何時移動,它阻止了彈出窗口的移動。 – tbodt
順便說一句 - 你不僅會在全屏時遇到這個問題。在10.11版本中,可以始終自動隱藏菜單欄: http://www.tekrevue.com/tip/hide-menu-bar-os-x-el-el-capitan/ – cacau
您可能想查看此主題,聽起來像一個乾淨的解決方案,您的問題: http://stackoverflow.com/questions/35008501/detect-if-menu-bar-is-hidden-or-visible – Jay