gpt4 book ai didi

cocoa - 为什么NSWindow没有styleMask :NSTitledWindowMask can not be keyWindow?

转载 作者:行者123 更新时间:2023-12-03 16:05:44 28 4
gpt4 key购买 nike

问题:我有一个窗口 mainWindow 和另一个添加到 mainWindowchildWindow 。childWindow 是一种 WindowExt 类。我为 catch 方法调用定义了这个类,该方法必须在 [childWindow makeKeyWindow] 之后调用。如果我创建 childWindow 并尝试将其设置为 keyWindow:

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask | NSTitledWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];

调用了 childWindow[WindowExt comeKeyWindow] - 一切正常,childWindow成为 keyWindow。

但是如果我将 childWindow 创建为

WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];

如果没有 NSTitledWindowMask,则 childWindow[WindowExtBecomeKeyWindow] 永远不会被调用 - childWindow 不会成为 keyWindow 。

最佳答案

这是 Cocoa 的设计决策:windows without title or resize bar cannot become key window by default .

如果您希望无标题窗口能够成为关键窗口,则需要创建 NSWindow 的子类并重写 -canBecomeKeyWindow,如下所示:

- (BOOL)canBecomeKeyWindow {
return YES;
}

关于cocoa - 为什么NSWindow没有styleMask :NSTitledWindowMask can not be keyWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com