如何在 Mac OS Swift 应用程序中重新获得/设置焦点

cur*_*urt 5 macos xcode cocoa swift

在我的一种观点中,我将模态对话框称为:

  let application = NSApplication.shared()
  application.runModal(for: artistDialogWindow)
Run Code Online (Sandbox Code Playgroud)

当按下“确定”或“取消”按钮时,我将终止模式窗口,如下所示:

let application = NSApplication.shared()
application.stopModal()
Run Code Online (Sandbox Code Playgroud)

调用该对话框的视图重新获得控制权。运行代码后,它退出。在屏幕上,似乎没有窗口具有焦点。如果我单击窗口的标题栏,标题栏左侧的红色、橙色和绿色按钮就会从灰色变为彩色。我怎样才能以编程方式做到这一点?

我尝试过 NSApplication.activate。它没有任何作用。想必我的应用程序已经处于活动状态。它只是没有焦点。我还尝试在视图中的表中选择一行。该行被选中,但窗口未被选中。

jul*_*a_v 5

你可以尝试 NSWindow 的 makeKey()。或者 makeKeyAndOrderFront(_ sender: 有吗?)。这些激活窗口。

例如, aniceWindow必须获得焦点(您需要对要获得焦点的窗口的引用)。然后做:

niceWindow.makeKey()
Run Code Online (Sandbox Code Playgroud)

或者

niceWindow.makeKeyAndOrderFront(self)
Run Code Online (Sandbox Code Playgroud)