【问题标题】:Cocoa Fullscreen problem with keyDown and keyUp可可全屏问题与 keyDown 和 keyUp
【发布时间】:2011-05-16 17:06:58
【问题描述】:

我是这样全屏的:

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

【问题讨论】:

    标签: objective-c cocoa opengl fullscreen


    【解决方案1】:

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

    【讨论】:

    • 是的,我必须重写 NSWindow 但只需要设置 -(BOOL)canBecomeKeyWindow { return YES; }。非常感谢,指明方向:)。
    【解决方案2】:

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

    【讨论】:

    • 我不使用它,因为我无法设置窗口级别“NSPopUpMenuWindowLevel-1”。我尝试使用选项“NSFullScreenModeWindowLevel”或在通过 setLevel 使用此功能后进行设置,但这两者都不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多