- (BOOL)applicationShouldHandleReopen:(NSApplication *)app hasVisibleWindows:(BOOL)flag {
NSLog(@"Has visible windows: %d, main window visible: %d", flag, [[app mainWindow] isVisible]);
if (!flag) {
// I need to make mainWindow visible again here. HOW???
// I tried the following but it has no effect.
// [[app mainWindow] makeKeyAndOrderFront:self];
return NO;
} else {
return YES;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用[window isVisible]消息查询,但没有相应的setVisible或"show"...
首先,Cocoa中的"主窗口"并不意味着我认为你的意思."主窗口"是活动的窗口.如果您没有订购任何窗户,那么主窗口就没有窗户,并且mainWindow会返回nil; 如果一个窗口处于活动状态,它就是主窗口,但它不是一个被命令的窗口(如果它是,它可能不是活动的).
因此,您需要为您认为是主窗口的窗口创建一个插座.
isVisible会告诉你该窗口是否已订购.如果订购了(isVisible退货NO),您需要订购.
当然,您不能只是订购它,因为这不会指定您希望它具有的订单.所以,你想订购前.
但如果没有用户关注,那么将其作为最前面的窗口并不重要 - 也就是说,如果它不是关键.因此,您希望将其设为关键并将其排序.
你要发送它的消息是makeKeyAndOrderFront:.使它成为关键也将使它成为主要.
| 归档时间: |
|
| 查看次数: |
5498 次 |
| 最近记录: |