2013-03-18 50 views
2

我知道這個用例是非典型的,但我一直在試圖找出一種方法來使NSPanel不被激活,只在某些情況下。是否可以在NSPanel上打開和關閉NSNonactivatingPanelMask

如果NSPanel與初始化NSNonactivatingPanelMask(或者如果面板的「非激活」屬性在Interface Builder被選中),在後面的代碼改變式面膜對窗口行爲沒有任何影響:

[panel setStyleMask:([panel styleMask] | NSNonactivatingPanelMask)]; 

檢查的styleMask屬性顯示NSNonactivatingPanelMask已打開,但點擊它的標題還是激活應用程序。

反過來也是如此。使用NSNonactivatingPanelMask進行初始化,稍後在代碼中將掩碼設置爲([panel styleMask] & ~NSNonactivatingPanelMask)對窗口行爲沒有影響,導致其在而不是單擊標題欄時激活該應用程序。

是否有一個簡單的解決方法,例如告訴窗口重新解釋其樣式掩碼的方法?如果沒有,最好的選擇是什麼?

回答

0

我唯一找到的解決方案是讓IB中的非激活複選框處於未選中狀態。然後設置或更高版本的代碼刪除NSNonactivatingPanelMask標誌。

if (nonactivating) 
    self.window.styleMask &= ~NSNonactivatingPanelMask; 
else 
    self.window.styleMask |= NSNonactivatingPanelMask; 

您仍然可以通過單擊窗口的標題欄激活您的應用程序,這可能是不受歡迎的。要麼你可以完全禁用標題欄或把它當作另一種方式來激活您的應用程序。

相關問題