2014-06-21 30 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)更深这些行为的定制