我使用带有HUD样式的NSPanel来显示一些信息。
在HUD面板中有一个按钮,当用户单击该按钮时,我将通过以下方式打开一个新窗口:
[anotherWindowController showWindow:self];
[anotherWindowController.window makeKeyAndOrderFront];当窗口显示时,我希望面板消失,所以我设置了主窗口的委托,在windowDidResignMain回调中,我调用了[hudPanel orderOut:nil]。
HUD面板确实消失了(我可以看到它),但是就在它关闭后,它重新打开。
我检查了所有可能的orderFront:代码,但没有一个被调用。所以我的手真的被绑住了。这是系统级别的行为吗?有人能指引我渡过难关吗?
编辑:
我忘记提到,按钮驻留在一个NSPopover中。所以,基本上,在HUD面板中有一个NSButton。当用户单击该按钮时,将显示一个NSPopover,其中有一个按钮可以打开新窗口。
非常感谢!
发布于 2014-04-10 10:15:43
我遇到了问题。以下问题解决了这个问题:
[NSApp endSheet:yourPanel];
[yourPanel orderOut:self];发布于 2015-04-15 09:22:11
使用
[hudPanel performClose:nil](在Swift中,我必须使用self而不是nil)。我在使用orderOut时遇到了问题,并使用上述方法解决了这个问题。
发布于 2018-02-27 21:57:12
请在[hudPanel close]后添加[hudPanel orderOut:nil]
swift:hudPanel.close()
从苹果的文档:如果窗口是键或主窗口,它后面的窗口对象是按其位置的键或主窗口。调用orderOut(_:)会使窗口从屏幕上删除,但不会导致其释放。有关何时释放窗口的信息,请参见close()方法。
我认为,有时窗口在窗口控制器内部逻辑中会再次出现。我有一个问题,当长按键盘按钮杀死窗口,但镜头keyDown事件只隐藏它在一秒。在使用close之后,一切都进展顺利。
https://stackoverflow.com/questions/22985047
复制相似问题