1

我目前在NSToolbar(Mac OS X)中有三个按钮。NSPopover相对于发送动作的按钮,每个按钮都会触发不同的显示。那部分工作正常。两个弹出框使用NSPopoverBehaviorTransient,一个使用NSPopoverBehaviorSemitransient(因为我特别希望它在应用程序之间切换或移动窗口时保持打开状态)。

当其中一个瞬态弹出框打开并且我单击弹出框本身之外的任何位置时,弹出框会正确关闭。半瞬态弹出框也是如此(除了切换应用程序和移动窗口),除非我单击另一个显示另一个弹出框的工具栏按钮。在这种情况下,现在两个弹出框同时在屏幕上可见。(我怀疑这是一个错误。)

同时在屏幕上显示弹出窗口的屏幕截图。

如果按下另一个工具栏按钮,我已经尝试研究可以自己启动关闭的方法。我想出的唯一选择是在文档级别跟踪当前打开的弹出框,并确保在打开另一个弹出框之前手动关闭它。我宁愿半瞬态弹出框能够自行关闭。

有什么我忽略的吗?谢谢。

4

1 回答 1

2

半瞬态行为的不透明定义包括半瞬态弹出框不会从导致打开或关闭另一个弹出框的事件(例如鼠标单击)中关闭。

一个值得注意的例外是显示半瞬态弹出框会导致其他半瞬态弹出框关闭......


所以这不是错误,只是定义不明确的行为。

不幸的是,这意味着如果您想混合使用半瞬态和瞬态弹出框,您需要在更高级别跟踪显示的弹出框。另一种方法是将所有弹出框设为半瞬态,并在您的设计需要时为特定弹出框添加额外的关闭逻辑。

值得为 (1) 更好的、记录在案的半瞬态和瞬态行为定义 (2) 更深入地定制这些行为

于 2014-06-23T02:22:24.783 回答