2014-06-21 29 views
1

我目前在NSToolbar(Mac OS X)中有三個按鈕。每個按鈕都會觸發不同的NSPopover以相對於發送操作的按鈕顯示。該部分正常工作。其中兩個彈出使用NSPopoverBehaviorTransient,一個使用NSPopoverBehaviorSemitransient(因爲我特別希望在切換應用程序或移動窗口時保持打開狀態)。NSPopover與NSPopoverBehaviorSemitransient在工具欄不關閉

當其中一個瞬態彈出窗口打開並且我單擊除彈出窗口本身以外的任何地方時,彈出窗口會正確關閉。除了切換應用程序和移動窗口外,Semitransient彈出窗口也是如此(除了切換應用程序和移動窗口),除了,如果我單擊另一個顯示另一個彈出窗口的工具欄按鈕。在這種情況下,現在兩個彈出在同一時間屏幕上可見。 (我懷疑這是一個錯誤。)

Screenshot of popovers onscreen at the same time.

我已經試過調查,我可以啓動關閉自己,如果另一個工具欄按鈕被按下的方式。我想出的唯一選擇是跟蹤文檔級別當前打開的彈出窗口,並確保在打開另一個窗口之前手動關閉它。我寧願Semitransient popover能夠關閉自己。

有什麼我可以忽略的嗎?謝謝。

回答

2

Semitransient行爲的不透明定義包括Semitransient彈出不會從導致打開或關閉另一個彈出窗口的事件(例如,鼠標單擊)關閉。

一個值得注意的例外是呈現出Semitransient酥料餅會導致其他Semitransient popovers收...


所以這是不是一個錯誤,就不好界定的行爲。

不幸的是,這意味着如果你想使用混合半透明&瞬間彈出,你需要跟蹤顯示在更高層次的彈出。另一種方法是製作所有彈出式Semitransient,如果您的設計需要添加額外的特定彈出式關閉邏輯。

這將是值得提起雷達:(1)比較好,Semitransient &瞬態行爲的記錄定義(2)更深這些行爲的定製