我在想,聚光灯怎么会随着焦点浮动,而另一个窗口仍然有焦点!
我可以用window?.level = Int(CGWindowLevelForKey(.maximumWindow))很容易地使一个窗口浮在所有其他窗口上,但我不能让两个窗口都有焦点,帮助!可可中是否有类似ShowWithoutActivating的函数?
window?.level = Int(CGWindowLevelForKey(.maximumWindow))
ShowWithoutActivating
mwkjh3gx1#
我一直在尝试这个方法,当最前面的窗口与最前面的应用程序不是来自同一个进程时,我似乎能够产生这种效果,我怀疑Spotlight可能就是这样做的。我可以这样实现:1.在我的应用的Info.plist中将LSUIElement设置为YES。1.在界面生成器中,将窗口的类设置为NSPanel,在属性检查器中选中“非激活”,并在身份检查器下的用户定义的运行时属性中将“isFloatingPanel”设置为YES。1.在一些其他应用程序在前面的时间(我只是使用了5秒的延迟,让自己有时间弹出一些其他应用程序到前面并选择一个文本字段),调用makeKeyAndOrderFront(),然后在窗口上调用orderFrontRegardless()。当我这样做时,我得到以下内容(注意焦点环仍然绘制在Xcode的“Module”字段上):
makeKeyAndOrderFront()
orderFrontRegardless()
juud5qan2#
有两个关键条件:1.使用NSPanel作为窗口1.将.nonactivatingPanel添加到NSPanel的styleMask
NSPanel
.nonactivatingPanel
styleMask
let window = NSPanel( contentRect: NSRect(x: 0, y: 0, width: 375, height: 800), styleMask: [ .nonactivatingPanel, .titled, .closable, .miniaturizable, .resizable, .fullSizeContentView ], backing: .buffered, defer: false )
2条答案
按热度按时间mwkjh3gx1#
我一直在尝试这个方法,当最前面的窗口与最前面的应用程序不是来自同一个进程时,我似乎能够产生这种效果,我怀疑Spotlight可能就是这样做的。我可以这样实现:
1.在我的应用的Info.plist中将LSUIElement设置为YES。
1.在界面生成器中,将窗口的类设置为NSPanel,在属性检查器中选中“非激活”,并在身份检查器下的用户定义的运行时属性中将“isFloatingPanel”设置为YES。
1.在一些其他应用程序在前面的时间(我只是使用了5秒的延迟,让自己有时间弹出一些其他应用程序到前面并选择一个文本字段),调用
makeKeyAndOrderFront()
,然后在窗口上调用orderFrontRegardless()
。当我这样做时,我得到以下内容(注意焦点环仍然绘制在Xcode的“Module”字段上):
juud5qan2#
有两个关键条件:
1.使用
NSPanel
作为窗口1.将
.nonactivatingPanel
添加到NSPanel
的styleMask