在失去焦点时以编程方式关闭NSWindow

时间:2009-12-23 00:31:28

标签: cocoa macos nswindow

我正在制作一个图像选择器,当弹出选择器时,它将显示n×n可选按钮网格。这个按钮网格将包含在NSWindow中,但是如果用户点击屏幕,我希望窗口自动关闭。是否有可以设置的标志,以便当窗口失去焦点时它会自动关闭?

2 个答案:

答案 0 :(得分:8)

您可能会对以下两种通知感兴趣:NSWindowDidResignKeyNotificationNSWindowDidResignMainNotification。您只需在awakeFromNib中注册您感兴趣的那个(如果您有自定义控制器,则可以注册windowDidLoad),然后在收到通知时根据需要关闭或隐藏窗口。

从UI的角度来看,我不会深入研究这是否是一个好主意。但是,为您描述的功能设置覆盖视图或面板可能更好。

答案 1 :(得分:3)

您可以查看NSPanel。它是一个NSWindow子类,当应用程序在后台时会隐藏自己,并且这种行为听起来与你正在寻找的非常相似。