我是 cocoa mac 开发的新手,现在我正在开发一个 mac 应用程序,在特定时间后有多个服务器命中。如果命中获得所需的数据,那么我需要显示等效的窗口并显示我正在使用 [myWindow showWindow:self] 方法的窗口。它显示所需的窗口并将关键窗口设置为我的可见窗口是 myWindow.
到目前为止,一切都很好,但问题是,假设当用户开始在任何窗口上工作并打开几个其他子窗口时,不幸的是我的显示窗口被调用,并且我的工作窗口的焦点转移到其他窗口。
经过多次搜索,我发现我可以通过访问 [[NSApplication sharedApplication]keyWindow]delegate] 来获取焦点窗口,我应用了几个条件,即当我的这个和这个窗口位于关键窗口上时,不要点击服务器。
但是问题还没有解决。现在我认为将 keyWindow 设置为我当前的工作窗口将是最好的选择。
请建议我该怎么做以及如何强制将窗口设置为我的关键窗口。
任何帮助将不胜感激。 提前致谢。
最佳答案
如果我正确理解您的问题,您希望在接收到来自服务器的输入但不将其移动到当前主窗口或关键窗口前面时将窗口向前移动。
您正在使用的方法,showWindow:
,属于NSWindowController
,并且都显示一个窗口并使其成为关键。
您需要查看的是用于管理窗口级别的 NSWindow
方法,orderFront:
等。
特别是,您可能想要使用 orderWindow:relativeTo:
,它允许将一个窗口放置在另一个窗口的前面/后面。例如:
[<window> orderWindow:NSWindowBelow
relativeTo:NSApp.keyWindow.windowNumber];
将把窗口移动到当前关键窗口的后面,以及关键窗口后面的任何其他窗口的前面。
HTH
关于objective-c - 如何了解 cocoa 中的聚焦窗口,以及如何将其设置为所需的窗口。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583288/