Objective c NSWindow子窗口在父窗口单击时关闭
我需要实现一个自定义的popover(不能使用Objective c NSWindow子窗口在父窗口单击时关闭,objective-c,cocoa,appkit,Objective C,Cocoa,Appkit,我需要实现一个自定义的popover(不能使用nspover)。这一切都很好,但我还需要实现,当用户单击父窗口中的某个位置时,popover会自动关闭 实现这一点的最佳方式是什么。如何在不子类化父窗口的情况下实现此功能?在显示popover键窗口时,使用NSWindowDidResignKeyNotification(或委托方法)在其退出该状态时关闭(当用户激活其他窗口时发生)。每当父窗口关闭时关闭也是一个好主意(NSWindowWillCloseNotification)。在显示弹出键窗口时将
nspover
)。这一切都很好,但我还需要实现,当用户单击父窗口中的某个位置时,popover会自动关闭
实现这一点的最佳方式是什么。如何在不子类化父窗口的情况下实现此功能?在显示popover键窗口时,使用NSWindowDidResignKeyNotification(或委托方法)在其退出该状态时关闭(当用户激活其他窗口时发生)。每当父窗口关闭时关闭也是一个好主意(
NSWindowWillCloseNotification
)。在显示弹出键窗口时将其打开,并在其退出该状态时使用NSWindowDidResignKeyNotification
(或委托方法)关闭(当用户激活其他窗口时发生)。每当父窗口关闭时关闭也是一个好主意(NSWindowWillCloseNotification
)。NSWindowDidResignMainNotification
不起作用,因为如果单击父窗口,窗口不会退出主窗口。@ErikAigner抱歉,这是键,不是主窗口。我的府绸就是这样做的。我已经更新了答案。还尝试了使用key(我想你可能指的是key),但没有成功:(我在之前实现了它,覆盖了NSWindow
ssendEvent:
,我想我会回到这一点,因为当弹出窗口处于活动状态时,父窗口样式应保持为键。这也是默认的nspover
行为,我希望尽可能地匹配该行为。如果这对任何人都有帮助,windowDidResignK如果为false,则不会发送ey(和windowDidBecomeKey)。NSWindowDidResignMainNotification
将不起作用,因为如果单击父项,窗口不会退出main。@ErikAigner抱歉,这是键,而不是main。我的popover就是这样做的。我已更新了答案。还尝试了使用key(您可能指的是key),但不起作用:(我在之前实现了它,覆盖了NSWindow
ssendEvent:
,我想我会回到这一点,因为当弹出窗口处于活动状态时,父窗口样式应保持为键。这也是默认的nspover
行为,我希望尽可能地匹配该行为。如果这对任何人都有帮助,windowDidResignK如果为false,则不会发送ey(和windowDidBecomeKey)。