Objective c 更换窗口后退出山狮全屏休息';s代表
我从Xcode模板为非基于文档的Cocoa应用程序创建了我的项目 我有一个自定义的Objective c 更换窗口后退出山狮全屏休息';s代表,objective-c,macos,cocoa,osx-lion,fullscreen,Objective C,Macos,Cocoa,Osx Lion,Fullscreen,我从Xcode模板为非基于文档的Cocoa应用程序创建了我的项目 我有一个自定义的NSWindowController,它在启动时被实例化后,占据默认窗口(在MainMenu.xib中定义) 如果我将应用程序代理的窗口保持原样,我可以使用命令-F(在菜单项中设置为-toggleFullscreen:)切换全屏模式,或者我可以按ESC退出全屏模式 一旦我将窗口控制器设置为窗口的代理(我需要它在进入/退出全屏时进行一些OpenGL调整,等等),我仍然可以通过按command+F进入全屏,但我不能再退
NSWindowController
,它在启动时被实例化后,占据默认窗口(在MainMenu.xib
中定义)
如果我将应用程序代理的窗口保持原样,我可以使用命令-F
(在菜单项中设置为-toggleFullscreen:
)切换全屏模式,或者我可以按ESC
退出全屏模式
一旦我将窗口控制器设置为窗口的代理
(我需要它在进入/退出全屏时进行一些OpenGL调整,等等),我仍然可以通过按command+F
进入全屏,但我不能再退出全屏(将command+tab
保存到另一个应用程序,或command+Q
)
此外,Apple文档提到将菜单操作设置为-切换全屏:
,将目标设置为nil
。最后一部分是如何在Interface Builder中完成的?(我将动作连接到第一响应者的-切换全屏:
)
我该怎么办?因此,我发现了问题(在So中发布问题似乎是找到解决方案的一个条件,总是…)
令人不快的一行不是设置代理,而是我在进入全屏模式后对窗口所做的操作。特别是,当我注释掉下面这行时
[窗口设置样式掩码:NSBorderlessWindowMask]代码>在下面的代码中:
- (void) windowDidEnterFullScreen:(NSNotification*) notification
{
NSWindow* window = [self window];
NSRect mainDisplayRect = [[NSScreen mainScreen] frame];
[window setStyleMask:NSBorderlessWindowMask];
[window setContentSize:mainDisplayRect.size];
[window setLevel:NSMainMenuWindowLevel + 1];
[window makeKeyAndOrderFront:self];
NSRect windowFrame = [window frame];
windowFrame.origin.x = 0;
windowFrame.origin.y = 0;
[window setFrame:windowFrame display:YES];
}
…预期的进入/退出全屏模式行为已修复 Cocoa桌面有时会非常复杂。每次我想实现某个东西时,我都会在开发人员库中打开10个浏览器窗口。您可以回答自己的问题,这样人们就会知道这个问题得到了回答。在那里,我将编辑移到了专用答案!你知道你也可以把它标记为正确的,这样它就会显示为绿色+1第一句:D(当然是解决问题)