Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在全屏应用程序前面添加NSWindow_Objective C_Macos - Fatal编程技术网

Objective c 在全屏应用程序前面添加NSWindow

Objective c 在全屏应用程序前面添加NSWindow,objective-c,macos,Objective C,Macos,我想在所有其他应用程序前面有一个窗口。 我希望这个窗口出现在关键字快捷方式,如“阿尔弗雷德”应用程序 我尝试了很多解决方案,但对于在主屏幕或第二屏幕上的全屏应用程序前面安装NSWindow,没有任何效果 我试过经典的: [self.window setLevel:NSMainMenuWindowLevel + 1]; [self.window setCollectionBehavior:NSWindowCollectionBehaviorStationary|NSWindowCollection

我想在所有其他应用程序前面有一个窗口。 我希望这个窗口出现在关键字快捷方式,如“阿尔弗雷德”应用程序

我尝试了很多解决方案,但对于在主屏幕或第二屏幕上的全屏应用程序前面安装NSWindow,没有任何效果

我试过经典的:

[self.window setLevel:NSMainMenuWindowLevel + 1];
[self.window setCollectionBehavior:NSWindowCollectionBehaviorStationary|NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary];
[self.window setHidesOnDeactivate:NO];
它的工作,除了全屏应用程序

它与NSPanel一起使用[self.videoWindow setStyleMask:NSBorderlessWindowMask]; 但只在主屏幕上


有人有办法吗?Alfred Developer around?

这可能取决于所讨论的应用程序如何实现全屏,但您可能只需要使用比
NSMainMenuWindowLevel+1
更高的窗口级别,例如
CGShieldingWindowLevel()+1

您可以从(必需免费开发人员帐户)下载Quartz调试


Quartz Debug可以告诉您任何窗口的级别,您所需要做的就是将窗口设置为高于您遇到问题的窗口(假设所讨论的应用程序没有做一些奇怪的事情来全屏显示)。

Alfred是作为代理实现的。代理可以在全屏应用程序的空间上显示窗口。你也应该让你的应用成为一个代理。这可以通过将Application is Agent标志添加到应用程序的info.plist文件并将该值设置为YES来实现。

我通过以下方式在全屏应用程序顶部显示了辅助窗口:

  • self.collectionBehavior=NSWindowCollectionBehavior移动到活动空间| NSWindowCollectionBehavior FullScreen辅助
  • 不要调用[NSApp ActivateBlala]
  • 将应用程序设为LSUIElement,并且不要通过TransformProcessType显示Dock图标

然而,我还不知道如何正确地为带有Dock图标的应用程序显示它。从另一方面看,我不知道哪个应用程序可以在具有Dock图标的情况下执行此操作。

谢谢,但它不起作用。全屏应用程序在我的窗口前面:(有什么想法吗?@boompa显然首先要尝试的是使用手动超高值,如9999。我将使用QuartzDebug更新我的答案。有什么消息吗?你是如何做到这一点的?这一点,以及将窗口的
级别设置为
CGShieldingWindowLevel()
帮了我的忙。