设置NSWindow专注

BUD*_*Ax2 3 cocoa focus objective-c nswindow nspanel

我有一个app winth一个窗口和一个面板,附在这个窗口上.

脚步:

  1. 停用我的应用(应用已打开,但没有焦点)
  2. 单击面板上的按钮(面板现在聚焦,但主窗口不是)

如何从面板设置焦点到主窗口(父窗口)?

Sta*_*ave 8

Swift 5 版本的@BUDDAx2 答案:

NSApplication.shared.activate(ignoringOtherApps: true)
Run Code Online (Sandbox Code Playgroud)


小智 7

目前尚不清楚焦点是什么意思,你称之为主窗口的是否是Cocoa中定义的主窗口.假设它是一个Cocoa主窗口,焦点与关键状态相同,

[[NSApp mainWindow] makeKeyWindow];
Run Code Online (Sandbox Code Playgroud)

要么

[[NSApp mainWindow] makeKeyAndOrderFront:self];
Run Code Online (Sandbox Code Playgroud)

如果它不是Cocoa主窗口,您需要引用它并发送它-makeKeyWindow-makeKeyAndOrderFront:.

  • `[[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; //"在OS X v10.0及更高版本中可用."` (4认同)
  • 我理解我的需要:[[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps]; 但是我为10.6和10.5编译了我的应用程序.NSRunningApplication类仅在10.6中.如何在10.5中做到这一点? (3认同)