Ped*_*ira 5 macos xcode cocoa objective-c nswindow
我有一个NSWindow我想在所有东西面前(计算机的每个应用程序,全屏应用程序等).即使我在后台应用程序中单击,也NSWindow无法转到后台.并且NSWindow必须遵循用户屏幕,例如,如果用户将桌面切换到desktop2,依此类推......我该怎么做?
谢谢!
aba*_*ert 10
如果你不需要在其他应用程序的全屏窗口中看到它,那就不难了.
首先,要保持在其他所有方面,只需使用setLevel:使用NSFloatingWindowLevel或更高版本.尝试使用不同的值来查看哪些值符合您的需求.
接下来,即使用户更改Spaces(可能包括Exposé/ Mission Control,setCollectionBehavior :)和适当的标志对,也可以保持在前面,或者如果您正在创建窗口中,请使用Attributes Inspector中相应的Spaces和Exposé设置.笔尖.无论是加入所有空间还是移动到活动空间都可以确保您以不同的方式在每个空间中保持可见.您可能希望Exposé设置为固定,或者也可能是Transient.再次,尝试两种方式,看看.
但是,当用户切换到全屏空间或仪表板或启动板时,Lion将隐藏所有空间和移动到活动空间窗口.如果你观察,你会发现它对三种情况中的每一种都以不同的方式做到这一点.Snow Leopard的做法有所不同,Mountain Lion也是如此.
如果你想解决最后一个问题,你需要为每个案例和每个操作系统版本提供一些hackery和不同形式的hackery.基本技巧是捕捉与隐藏相关的通知,并在适当的时候取消隐藏.