【发布时间】:2016-01-25 15:28:17
【问题描述】:
我的代码中有一些功能可以在事件发生时打开弹出框。问题是,如果这些事件一个接一个地发生,那么打开的弹出框就会重叠。
我想在打开新弹出框时关闭一个弹出框。
如果有一个活动的弹出窗口,有什么方法可以从 nswindow 获取?
提前致谢和问候
【问题讨论】:
我的代码中有一些功能可以在事件发生时打开弹出框。问题是,如果这些事件一个接一个地发生,那么打开的弹出框就会重叠。
我想在打开新弹出框时关闭一个弹出框。
如果有一个活动的弹出窗口,有什么方法可以从 nswindow 获取?
提前致谢和问候
【问题讨论】:
我认为您需要使用 NSPopover 的通知方法,例如:
- (void)popoverDidShow:(NSNotification *)notification;
- (void)popoverWillClose:(NSNotification *)notification;
并添加一些逻辑来隐藏未关闭的弹出框...
【讨论】:
最后我能够通过使用发布的通知来弄清楚:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(popoverWillShow:)
name:NSPopoverWillShowNotification
object:nil];
然后在选择器中比较对象:(popover 是一个 NSPopover)
- (void)popoverWillShow:(NSNotification *)notification {
if (![popover isEqual:[notification object]])
[self close];
}
【讨论】: