2011-09-03 129 views
12

嗨我在我的一个应用程序中实现了一个NSPopover,但popover不会关闭。我猜想,一旦我点击了别的东西,它就会关闭,但不是。我知道有一个关闭popover行动,但只适用于不同的按钮。我怎样才能让它看到弹出窗口是打开的,以及当按下同一个按钮时弹出窗口关闭弹出窗口?如何采取措施关闭NSPopover?

+0

想通了如何做到这一点。首先在xCode 4中单击Interface Builder中的Popover,然后转到侧边栏上的attributes部分,并将弹出窗口的行为更改为Transient而不是默认的Application-Defined。这应该使它消失! – sridvijay

+3

关于解决问题的补充措施,但通过提供实际的答案帖子,即使您回答自己的问题,也可以提供更好的答案。点击下面的“回答你的问题”按钮。此外,这个问题的标签很差。考虑添加一个或两个与您所询问的平台或语言相关的标签。这将帮助其他有同样问题的人找到你制定的答案! – SingleNegationElimination

+0

谢谢,我刚刚添加了另一个答案,并添加了更多标签! – sridvijay

回答

23

我解决了这个问题!

  • 首先继续并单击您的.xib文件。
  • 如果您看到第一个响应者框和文件所有者,请单击弹出窗口。
  • 在边栏上转到属性中心
  • 将行为从应用程序定义更改为瞬态,它应该工作!

这应该会让popover消失,一旦有人点击了popover外部。

另一种关闭弹出窗口的方法是有一个单独的按钮。 只需添加另一个NSButton,然后将其链接到侧边栏上的弹​​出窗口,并将其设置为接收操作 - >执行关闭:

+2

此外,如果您选择Semi-transient,您在弹出窗口外的第一次点击将同时关闭弹出窗口并注册其下方的视图(即,如果直接点击另一个视图中的按钮,弹出窗口会关闭,按钮将被按下。) –