【发布时间】:2009-12-23 00:31:28
【问题描述】:
我正在制作一个图像选择器,当弹出拾取器时,将显示一个可选按钮的n个网格。这个按钮网格将包含在 NSWindow 中,但我希望在用户单击屏幕时自动关闭窗口。是否可以设置一个标志,以便当窗口失去焦点时它会自动关闭?
【问题讨论】:
我正在制作一个图像选择器,当弹出拾取器时,将显示一个可选按钮的n个网格。这个按钮网格将包含在 NSWindow 中,但我希望在用户单击屏幕时自动关闭窗口。是否可以设置一个标志,以便当窗口失去焦点时它会自动关闭?
【问题讨论】:
您可能对以下两个通知感兴趣:NSWindowDidResignKeyNotification 和 NSWindowDidResignMainNotification。您只需在 awakeFromNib(或 windowDidLoad,如果您有自定义控制器)中注册您感兴趣的窗口,然后在收到通知时根据需要关闭或隐藏窗口。
我不会深入探讨从 UI 的角度来看这是否是一个好主意。但是,为您描述的功能设置一个覆盖视图或面板可能是一个更好的主意。
【讨论】:
您可以查看NSPanel。它是一个 NSWindow 子类,当应用程序在后台运行时,它会隐藏自己,并且这种行为听起来与您正在寻找的非常相似。
【讨论】:
NSPanel 在 app 失去焦点时隐藏。