我很确定答案一定很容易,但由于某些原因我不能让它起作用!
我有一个窗口,这段代码:
[someWindow setHidesOnDeactivate:YES];
我有一个状态项,以及以下代码
- (void)openWindow{
if ([someWindow isVisible]) {
NSLog(@"CLOSING");
[lyricWindow close];
}else {
[someWindow makeKeyAndOrderFront:nil];
NSLog(@"SHOWING");
}
}
当我关闭窗口并想再次打开它时,这个工作正常。既然我已经实现了停用的隐藏,我就失去了我需要做的事情!我已经尝试了各种各样的事情......我希望窗口再次显示,并且当我单击状态项时窗口变为活动状态!我认为这就是我的问题。
单击状态项时,如何激活窗口?
我在日志中得到以下内容:
关闭显示关闭显示
无论窗口是否隐藏,关闭都是第一个,这是相当有趣的,因为如果窗口被隐藏,则id guess isVisible
将返回false
。无论如何,我没有窗户。我该如何取消隐藏窗户?
谢谢!
答案 0 :(得分:9)
我遇到了同样的问题,因为在隐藏停用后我无法重新显示窗口。就我而言,当我按下NSStatusItem时,我正在显示NSPanel(NSWindow的子类)。
以下代码最终让我的NSPanel重新显示:
[NSApp arrangeInFront:sender];
[myWindow makeKeyAndOrderFront:sender];
[NSApp activateIgnoringOtherApps:YES];
我很确定'activateIgnoringOtherApps'是关键所在。对我而言,它并不理想,因为它将焦点从用户当前的应用程序中移开。