我尝试使用NSPanel并设置启用非激活,但这没有帮助.
我尝试了orderFront:self,但这也没有帮助.
我总是需要添加[NSApp activateIgnoringOtherApps:YES];因为窗口不会显示.
我这里有一个仅用于此功能的示例项目:
http://users.telenet.be/prullen/TopW2.zip
UIElement在应用程序的pList文件中设置为true,因此没有停靠.您可以同时按ALT SPACE激活窗口.您将看到它下面的应用程序失去焦点.有关如何解决此问题的任何想法?我见过其他应用程序这样做,所以我知道它是可能的.
编辑:这是迄今为止的代码.请记住,窗口是非激活的NSPanel.
我仍然需要最后一个NSApp activateIgnoringOtherApps行,否则它不会显示.但当然这使得窗口成为活跃的窗口.
_windowController = [[MyWindowController alloc] initWithWindowNibname:@"MyWindowController"]; [[_windowController window] setLevel:NSnormalWindowLevel+1]; [[_windowController window] orderFrontRegardless]; [_windowController showWindow:self]; [NSApp activateIgnoringOtherApps:YES];
我还将NSPanel子类化,并添加了两种方法:
- (BOol)canBecomeKeyWindow{ return YES;}- (BOol)canBecomeMainWindow{ return YES;}
编辑:好的,取消选中setHIDesOnDeactivate会修复此问题,但现在窗口永远不会隐藏.当用户按下它下方的应用程序或切换到另一个应用程序时,我需要隐藏它.
编辑2:好的,这似乎解决了上述问题:
- (voID)awakeFromNib{ [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(hIDeWindow) name:NSWindowDIDResignKeyNotification object:nil];}- (voID)hIDeWindow { [self setHIDesOnDeactivate:YES];}
不确定是否有更好的方法.
对于那些想知道如何显示窗口的人:
[[_windowController window] setLevel:NSPopUpMenuWindowLevel]; [[_windowController window] orderFrontRegardless]; [[_windowController window] makeKeyWindow]; [_windowController showWindow:self];解决方法 其中任何一个都应该做到这一点:
>使用 – [NSWindow orderFrontRegardless]在前面获取正常级别窗口而不激活相应的应用程序,或者>使用 – [NSWindow setLevel:]将窗口级别增加到高于NSnormalWindowLevel的值
总结以上是内存溢出为你收集整理的objective-c – 不激活显示窗口(将应用程序保持在活动状态下)全部内容,希望文章能够帮你解决objective-c – 不激活显示窗口(将应用程序保持在活动状态下)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)