deo*_*ngh 3 macos cocoa osx-leopard window
在我的应用程序中,我有一组windows.I希望其中一个窗口在应用程序处于活动状态时始终处于最顶层.我尝试通过更改窗口级别来执行此操作,但未成功.
如果我放置NSNormalWindowLevel,然后点击我的应用程序的任何其他窗口,这个窗口进入后台.如果我使用除NSNormalWindowLevel之外的任何其他级别,那么即使我切换到其他应用程序,窗口仍然是最顶层的.我希望窗口在我的应用程序处于活动状态时才是最顶层的.如何在可可中执行此操作?
谢谢
这是可能的,但只能以编程方式完成(这意味着不在Interface Builder中):
如果你有一个窗口,请使用
[window setLevel: NSMainMenuWindowLevel];
Run Code Online (Sandbox Code Playgroud)
如果您使用窗口控制器(NSWindowController),请使用
[windowController showWindow:self];
[windowController.window setLevel: NSMainMenuWindowLevel];
Run Code Online (Sandbox Code Playgroud)
一般情况下,您可以使用以下级别:
NSNormalWindowLevel
NSFloatingWindowLevel
NSSubmenuWindowLevel
NSTornOffMenuWindowLevel
NSMainMenuWindowLevel
NSStatusWindowLevel
NSDockWindowLevel
NSModalPanelWindowLevel
NSPopUpMenuWindowLevel
NSScreenSaverWindowLevel
Run Code Online (Sandbox Code Playgroud)
如果您想在Interfacebuilder中显示最顶层的窗口(即菜单中的调用),请在App-Delegate中创建一个IBAction并分配对此操作的调用:
-(IBAction)showWindowCalledFromMenu:(id)sender {
[self.window setLevel: NSMainMenuWindowLevel];
[self.window makeKeyAndOrderFront:self];
}
Run Code Online (Sandbox Code Playgroud)
如果您希望窗口仅在应用程序处于活动状态时位于最顶层,则必须知道您的应用程序是否处于活动状态.在你的"main.xib"中观看"First Responder"中的"动作".您可以使用以下事件重置窗口级别:"deminiaturize","order Front","order Back"等等.
希望这可以帮助.玩得开心!
归档时间: |
|
查看次数: |
4487 次 |
最近记录: |