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

Mik*_*012 6 macos cocoa nswindow

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

sbo*_*oth 8

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

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


Vin*_*ble 5

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