Objective c NSWindow子窗口在父窗口单击时关闭

Objective c NSWindow子窗口在父窗口单击时关闭,objective-c,cocoa,appkit,Objective C,Cocoa,Appkit,我需要实现一个自定义的popover(不能使用nspover)。这一切都很好,但我还需要实现,当用户单击父窗口中的某个位置时,popover会自动关闭 实现这一点的最佳方式是什么。如何在不子类化父窗口的情况下实现此功能?在显示popover键窗口时,使用NSWindowDidResignKeyNotification(或委托方法)在其退出该状态时关闭(当用户激活其他窗口时发生)。每当父窗口关闭时关闭也是一个好主意(NSWindowWillCloseNotification)。在显示弹出键窗口时将

我需要实现一个自定义的popover(不能使用
nspover
)。这一切都很好,但我还需要实现,当用户单击父窗口中的某个位置时,popover会自动关闭


实现这一点的最佳方式是什么。如何在不子类化父窗口的情况下实现此功能?

在显示popover键窗口时,使用NSWindowDidResignKeyNotification(或委托方法)在其退出该状态时关闭(当用户激活其他窗口时发生)。每当父窗口关闭时关闭也是一个好主意(
NSWindowWillCloseNotification
)。

在显示弹出键窗口时将其打开,并在其退出该状态时使用
NSWindowDidResignKeyNotification
(或委托方法)关闭(当用户激活其他窗口时发生)。每当父窗口关闭时关闭也是一个好主意(
NSWindowWillCloseNotification
)。

NSWindowDidResignMainNotification
不起作用,因为如果单击父窗口,窗口不会退出主窗口。@ErikAigner抱歉,这是键,不是主窗口。我的府绸就是这样做的。我已经更新了答案。还尝试了使用key(我想你可能指的是key),但没有成功:(我在之前实现了它,覆盖了
NSWindow
s
sendEvent:
,我想我会回到这一点,因为当弹出窗口处于活动状态时,父窗口样式应保持为键。这也是默认的
nspover
行为,我希望尽可能地匹配该行为。如果这对任何人都有帮助,windowDidResignK如果为false,则不会发送ey(和windowDidBecomeKey)。
NSWindowDidResignMainNotification
将不起作用,因为如果单击父项,窗口不会退出main。@ErikAigner抱歉,这是键,而不是main。我的popover就是这样做的。我已更新了答案。还尝试了使用key(您可能指的是key),但不起作用:(我在之前实现了它,覆盖了
NSWindow
s
sendEvent:
,我想我会回到这一点,因为当弹出窗口处于活动状态时,父窗口样式应保持为键。这也是默认的
nspover
行为,我希望尽可能地匹配该行为。如果这对任何人都有帮助,windowDidResignK如果为false,则不会发送ey(和windowDidBecomeKey)。