KeyDown和keyUp的Cocoa全屏问题

时间:2010-11-27 22:51:21

标签: objective-c cocoa opengl fullscreen

我以这种方式全屏:

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

2 个答案:

答案 0 :(得分:1)

你为什么要自己做这一切?只需向您的视图发送-enterFullScreenMode:withOptions:消息即可。

答案 1 :(得分:1)

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

相关问题