我正在为脚本语言实现编写一些粘合GUI代码,并且需要能够以编程方式创建窗口并拦截其视图上的键和鼠标命令。我已经将NSWindow和NSView分类。
当我第一次打开一个窗口时,我会看到一个带有标题栏和控件的窗口。如果我关闭此窗口并打开另一个窗口,则控件和标题不会出现在新窗口中。但是,如果我单击控件应该的位置,新窗口(带有不可见的控件)仍会关闭。
我的窗口初始化中是否有可能导致这种情况的事情?
+ (HMSLWindow*)hmslWindowWithTitle:(NSString *)title frame:(NSRect)frame {
HMSLWindow* hmslWindow = [[HMSLWindow alloc]
initWithContentRect: frame
styleMask: NSMiniaturizableWindowMask | NSTitledWindowMask | NSClosableWindowMask
backing: NSBackingStoreBuffered
defer: YES];
hmslWindow.title = [title retain];
[hmslWindow setContentView:[[HMSLView alloc] initWithFrame:frame]];
hmslWindow.delegate = [[HMSLWindowDelegate alloc] init];
[hmslWindow cascadeTopLeftFromPoint:NSZeroPoint];
[hmslWindow makeKeyAndOrderFront:self];
[[HMSLWindow windowDictionary] setObject:hmslWindow forKey:[NSNumber numberWithInteger:hmslWindow.windowNumber]];
return hmslWindow;
}
- (void)close {
[[HMSLWindow windowDictionary]
removeObjectForKey:[NSNumber numberWithInteger:self.windowNumber]];
[self.contentView autorelease];
[self.delegate autorelease];
[self.title autorelease];
[super close];
}
第一个窗口:
第二个窗口(带有白色背景的contentView是正确的,但标题栏现在是空的):