2010-11-27 86 views
2

我做全屏这样:可可全屏问题的keyDown和KeyUp

NSRect frame = [[NSScreen mainScreen] frame]; 

// Instantiate new borderless window 
fullscreenWindow = [[NSWindow alloc] initWithContentRect:frame 
        styleMask:NSBorderlessWindowMask 
        backing:NSBackingStoreBuffered defer: NO]; 

startingWindow = [self window]; 
[startingWindow setAcceptsMouseMovedEvents:NO]; 
[startingWindow orderOut:nil]; 

if(fullscreenWindow != nil) 
{ 
    // Set the options for our new fullscreen window   
    [fullscreenWindow setReleasedWhenClosed: YES]; 
    [fullscreenWindow setAcceptsMouseMovedEvents:YES]; 
    [fullscreenWindow setContentView: self]; 
    [fullscreenWindow makeKeyAndOrderFront:self ]; 
    [fullscreenWindow setLevel: NSPopUpMenuWindowLevel-1]; 
    [fullscreenWindow makeFirstResponder:self]; 
} 

切换到全屏不工作的keyDown和KeyUp后。 如何使它工作?

在此先感谢。

问候Chudziutki

回答

1

你为什么做这一切工作的自己呢?只需发送您的看法一个-enterFullScreenMode:withOptions:消息。

+0

我不使用这个,因为我无法设置窗口级别“NSPopUpMenuWindowLevel-1”。我尝试使用选项“NSFullScreenModeWindowLevel”或通过setLevel使用此函数后设置此选项,但这两个都不起作用。 – Chudziutki 2010-11-28 09:56:08

1

您需要用继承自NSWindow的自己的类覆盖NSWindow类。然后重写keyDown和keyUp事件消息以捕获它们。然后,您将这些事件传递给需要它们的人。

+2

是的,我必须重写NSWindow,但只需要设置 - (BOOL)canBecomeKeyWindow {return YES; }。非常感谢,展现方向:)。 – Chudziutki 2010-11-29 21:33:45