如何在OSX Lion中以全屏模式运行NSWindowController?

时间:2012-04-19 01:03:53

标签: objective-c cocoa

不成功,我已经广泛搜索了如何在OSX Lion中以编程方式使NSWindowController以全屏模式运行。

我甚至竟然购买,“Sams教你自己Mac OS X Lion App开发”,因为第21小时应该教会如何做到这一点。我看到一些评论认为本书中的代码通常不起作用。无论如何我抓住了机会,唉!

以上是上述章节的样本a link

基本上,以下是基于上面列出的第21小时的测试程序:

#import <Cocoa/Cocoa.h>

@interface WeatherWindowController : NSWindowController

- (IBAction)toggleFullScreen:(id)sender;

@end

我添加了一个NSObject并为其分配了WeatherWindowController。我有一个正确连接的按钮,因为它正确记录NSLog语句。

#import "WeatherWindowController.h"

@interface WeatherWindowController ()

@end

@implementation WeatherWindowController

- (id)initWithWindow:(NSWindow *)window
{
    self = [super initWithWindow:window];
    if (self) {
        // Initialization code here.
    }
    return self;
}

-(void) awakeFromNib{
    self.window.collectionBehavior = NSWindowCollectionBehaviorFullScreenPrimary;    
}

- (void)windowDidLoad
{
    [super windowDidLoad];
    // Implement this method to handle any initialization after your window controller's window    has been loaded from its nib file.
}

- (IBAction)toggleFullScreen:(id)sender {
    NSLog(@"before toggleFullScreen");
    [self.window toggleFullScreen:sender];
    NSLog(@"after toggleFullScreen");
}
@end

1 个答案:

答案 0 :(得分:0)

不应该在窗口控制器中实现此方法,因为它的窗口也将位于响应器链中,因此当您选择“进入/退出全屏”菜单项时,应该接收操作您已添加到视图菜单并连接到First Responder。

那么,假设您已创建并配置了该菜单项,那么当您选择会发生什么?