我正在编写一个应用程序,希望在桌面图标(Mac OSX 10.7 Lion)之上绘制基本的NSWindow。
NSWindow *systemInfoWindow = [[NSWindow alloc] initWithContentRect:frame
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
systemInfoWindow.delegate = self;
[systemInfoWindow setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
[systemInfoWindow setBackgroundColor:backgroundColorSpace];
[systemInfoWindow makeKeyAndOrderFront:NSApp];
[systemInfoWindow setLevel:kCGDesktopIconWindowLevel];
这部分代码效果很好,NSWindow可以在图标之上绘制。 但如果我在两个空格之间切换,我的NSWindow会留在图标后面。
/ * ===更新=== * / 我觉得我的窗口水平有问题。为了更好地理解,我上传了两个截图。 空间1 - 窗口保持在我想要的图标之上 http://dl.dropbox.com/u/1503795/Space1.png
Space 2 - 窗口位于桌面图标后面。他们也应该保持领先 http://dl.dropbox.com/u/1503795/Space2.png
我发现了另一个问题。如果我激活了应用程序并保留在第一个空间中,一切看起来都像我的第一个截图。如果我选择桌面上的文件,窗口也会跳到后面: 抱歉,无法发布其他屏幕截图
我希望我的问题更容易理解。
我不知道如何解决这个问题。有人有想法吗? 谢谢!
答案 0 :(得分:0)
您可能需要注册空间更改通知:
NSNotificationCenter* nc = [[NSWorkspace sharedWorkspace] notificationCenter];
[nc addObserver:self
selector:@selector(activeSpaceDidChange:)
name:NSWorkspaceActiveSpaceDidChangeNotification
object:nil];
然后,您可以回复通知并更新您的窗口:
- (void) activeSpaceDidChange:(NSNotification*)aNotification
{
[[self window] orderFront:self];
}