【问题标题】:Losing focus of NSView after setFrame of NSWindow在 NSWindow 的 setFrame 之后失去 NSView 的焦点
【发布时间】:2011-08-18 08:41:09
【问题描述】:

我通过设置它的框架将我的 NSWindow 从正常模式切换到全屏(我知道有一种方法可以让视图全屏,但它需要这样)

在我的 NSOpenGLView 中,我正在跟踪 onMouseMove 事件...

切换到全屏(或返回)后,我必须单击视图(窗口内),才能接收 mouseMove 事件。看起来它失去了焦点,但我不明白为什么(我只是使用 setFrame)以及如何使其再次聚焦,而无需用户单击窗口。

我的 NSOpenGLView (NSView) 中的代码:

    if (!fullscreenOn) {
        //!switch to fullscreen mode
        NSRect mainDisplayRect = [[[self window] screen] frame];
        [[self window] setStyleMask:NSBorderlessWindowMask];

        [[self window] setFrame:[[self window] frameRectForContentRect:mainDisplayRect] display:YES animate:NO];

        [[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock];

        fullscreenOn = YES;     

    } else {

        [[self window] setStyleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSTexturedBackgroundWindowMask];

        [[NSApplication sharedApplication] setPresentationOptions: NSApplicationPresentationDefault];

        ... some code for the right size ...
        [[self window] setFrame:frame display: YES animate: YES];

        fullscreenOn = NO;
    }

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

    问题在于设置 [[self window] setStyleMask:NSBorderlessWindowMask];这导致了这种行为......默认情况下使窗口无边框修复了问题

    【讨论】:

    • 嗨彼得,你是什么意思设置窗口默认无边框?我遇到了同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多