Dav*_*ein 4 macos cocoa objective-c
我有一个在启动时运行的应用程序作为OS X菜单栏中的菜单(即作为后台应用程序).从菜单中选择一个选项后,它将转换为前景应用程序(创建停靠图标)并显示一个窗口.
这是我正在使用的背景/前景代码:
+(void) TransformToForegroundApplication {
ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
}
+(void) TransformToBackgroundApplication {
ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToUIElementApplication);
}
Run Code Online (Sandbox Code Playgroud)
非常标准的东西,从事物的外观.除了一个小问题外,它工作正常.
问题是,在我调用TransformToForegroundApplication之后,我在窗口上调用makeKeyAndOrderFront:使它到达Z顺序的前面并获得焦点 - 但它没有.它出现在后台,在其他一切之下.我需要点击停靠栏图标,或者最小化它前面的所有窗口,然后点击该窗口,以便将它带到前面.
有任何想法吗?
可能你需要激活我认为TransformProcessType()不会自动执行的应用程序,并且知道-makeKeyAndOrderFront:不会.
你试过打电话[NSApp activateIgnoringOtherApps:YES]吗?
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |