问题:
我有一个窗口mainWindow,另一个childWindow
添加到mainWindow
。
childWindow有点WindowExt
类。这个类我定义了必须在[NSWindow becomeKeyWindow]
之后调用的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];
调用[WindowExt becomeKeyWindow]
的方法childWindow
- 一切正常,childWindow
成为keyWindow。
但是如果我创建childWindow为
WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];
没有NSTitledWindowMask
,[WindowExt becomeKeyWindow]
的{{1}}永远不会被调用 - childWindow
不会成为keyWindow。
答案 0 :(得分:24)
这是一个Cocoa设计决定:windows without title or resize bar cannot become key window by default。
如果您希望无标题窗口能够成为关键窗口,则需要创建NSWindow
的子类并覆盖-canBecomeKeyWindow
,如下所示:
- (BOOL)canBecomeKeyWindow {
return YES;
}
答案 1 :(得分:0)
您可以将样式蒙版设置为NSBorderlessWindowMask
以使其无边框