1

尝试制作全屏应用程序时,我遇到了一个奇怪的问题。我目前正在使用NSWindow带有 a 的aaNSBorderlessWindowMask来使屏幕显示在顶部,并且我进行了子类化NSWindow以接受键:

- (BOOL) canBecomeKeyWindow
{
    return YES;
}

这很好用,我可以在窗口中使用按键,然后使用 Command + Q 退出应用程序。但是,当我尝试在 Mac 上强制退出应用程序时,屏幕冻结,我必须重新启动计算机。我的窗口中有一个简单的 WebView:

mainWindow = [[MyBorderWindow alloc] initWithContentRect:screenRect
                                         styleMask:NSBorderlessWindowMask
                                           backing:NSBackingStoreBuffered
                                             defer:NO screen:[NSScreen mainScreen]];


[mainWindow setLevel:windowLevel];
[mainWindow setBackgroundColor:[NSColor blackColor]];
[mainWindow makeKeyAndOrderFront:nil];
NSView *contentView = [mainWindow contentView];
WebView *customView = [[WebView alloc] initWithFrame:[contentView bounds]];
[customView setTranslatesAutoresizingMaskIntoConstraints:NO];
[contentView addSubview:customView];

我已经在另一台计算机上尝试了该应用程序,并且强制退出不会冻结屏幕。两台计算机都运行 OS X Mavericks。

如果还有什么我应该添加的,请告诉我。

提前致谢,

布科

编辑:

我认为我在 AppDelegate 中的 applicationWillTerminate 方法可能是问题的一部分,但我不确定。为什么这种方法可以在另一台计算机上正常工作,但不是我的?

- (void)applicationWillTerminate:(NSNotification *)notification
{
    [mainWindow orderOut:self];

    // Release the display(s)
    if (CGDisplayRelease( kCGDirectMainDisplay ) != kCGErrorSuccess) {
        NSLog( @"Couldn't release the display(s)!" );
    }
}
4

0 回答 0