问题:
我有一个窗口 mainWindow 和另一个窗口childWindow
添加到mainWindow
。
childWindow 是一种WindowExt
班级。我为 catch 方法调用定义了这个类[NSWindow becomeKeyWindow]
必须在之后调用[childWindow makeKeyWindow]
。
如果我创建子窗口并尝试将其设为 keyWindow :
WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask | NSTitledWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];
method [WindowExt becomeKeyWindow]
for childWindow
被称为 - 一切都很好,childWindow
成为关键窗口。
但是如果我创建 childWindow 作为
WindowExt *childWindow = [[WindowExt alloc] initWithContentRect:addedWindowRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
[mainWindow addChildWindow:childWindow ordered:NSWindowAbove];
[childWindow makeKeyWindow];
without NSTitledWindowMask
, [WindowExt becomeKeyWindow]
for childWindow
从未被称为 -childWindow
不会成为 keyWindow。
这是 Cocoa 的设计决策:没有标题或调整大小栏的窗口默认不能成为关键窗口 http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWindow_Class/Reference/Reference.html#//apple_ref/occ/instm/NSWindow/canBecomeKeyWindow.
如果你想让一个无标题的窗口能够成为一个关键窗口,你需要创建一个子类NSWindow
并覆盖-canBecomeKeyWindow
如下:
- (BOOL)canBecomeKeyWindow {
return YES;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)