Objective c 如何使NSWindowController在OSX Lion中以全屏模式运行?
没有成功,我已经广泛地搜索了如何通过编程使NSWindowController在OSX Lion中以全屏模式运行 我甚至买了“Sams自学Mac OS X Lion应用程序开发”,因为第21章/小时应该教你如何做。我看到一些评论,认为这本书中的代码通常不起作用。不管怎样,我还是抓住了机会 下面是上述章节的一个示例 基本上,以下是我在上面列出的21小时测试计划的内容:Objective c 如何使NSWindowController在OSX Lion中以全屏模式运行?,objective-c,cocoa,Objective C,Cocoa,没有成功,我已经广泛地搜索了如何通过编程使NSWindowController在OSX Lion中以全屏模式运行 我甚至买了“Sams自学Mac OS X Lion应用程序开发”,因为第21章/小时应该教你如何做。我看到一些评论,认为这本书中的代码通常不起作用。不管怎样,我还是抓住了机会 下面是上述章节的一个示例 基本上,以下是我在上面列出的21小时测试计划的内容: #import <Cocoa/Cocoa.h> @interface WeatherWindowController
#import <Cocoa/Cocoa.h>
@interface WeatherWindowController : NSWindowController
- (IBAction)toggleFullScreen:(id)sender;
@end
不需要在窗口控制器中实现此方法,因为其窗口也将位于响应器链中,因此当您选择添加到视图菜单并连接到第一响应器的“进入/退出全屏”菜单项时,应接收操作
因此,假设您已经创建并配置了该菜单项,那么当您选择该菜单项时会发生什么?不需要在窗口控制器中实现该方法,因为它的窗口也将位于响应器链中,因此当您选择“进入/退出全屏”时,应该会收到该操作添加到视图菜单并连接到第一响应程序的菜单项
那么,假设您已经创建并配置了该菜单项,那么当您选择它时会发生什么呢?谢谢您的回复。我添加了全屏菜单项,它通过First Responder连接到toggleFullScreen。我运行应用程序,全屏菜单选项变灰。一时兴起,我将IB全屏设置从“不支持”更改为“主窗口”,运行它,全屏菜单项现在可用,它使窗口全屏。@Dan:听起来不错,不过文档在这个问题上确实含糊不清。你应该把它贴出来作为回答。对不起,彼得,我误按了回车键。这应该是最后一句话的结尾:然而,这不是我想要的。我希望通过编程方式设置全屏可用性,而不是通过手动IB设置。有什么想法吗?我认为设置self.window.collectionBehavior=NSWindowCollectionBehaviorFullScreenPrimary;awakeFromNib中的声明可以实现这一点。@Rob您上面的评论是我在我的情况下寻找的答案。我查阅了如何将评论标记为答案,许多人认为评论应该是评论,答案应该是答案。请让我知道我是否应该用另一种方式标记这个问题的答案。谢谢彼得的回答。我添加了全屏菜单项,它通过First Responder连接到toggleFullScreen。我运行应用程序,全屏菜单选项变灰。一时兴起,我将IB全屏设置从“不支持”更改为“主窗口”,运行它,全屏菜单项现在可用,它使窗口全屏。@Dan:听起来不错,不过文档在这个问题上确实含糊不清。你应该把它贴出来作为回答。对不起,彼得,我误按了回车键。这应该是最后一句话的结尾:然而,这不是我想要的。我希望通过编程方式设置全屏可用性,而不是通过手动IB设置。有什么想法吗?我认为设置self.window.collectionBehavior=NSWindowCollectionBehaviorFullScreenPrimary;awakeFromNib中的声明可以实现这一点。@Rob您上面的评论是我在我的情况下寻找的答案。我查阅了如何将评论标记为答案,许多人认为评论应该是评论,答案应该是答案。请让我知道我是否应该以另一种方式标记此问题的答案。您的nib文件中是否连接了您的
窗口插座?@RobKeniger就是这样,谢谢!nib文件中是否连接了窗口的插座?@RobKeniger就是这样,谢谢!
#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