【发布时间】:2023-04-06 15:51:01
【问题描述】:
在我的 MacOS 应用程序中,工具栏中有一个 NSSearchField。我想让用户通过按CMD+F(与许多 Apple 应用程序中使用的行为相同)来集中注意力。我创建了一个NSMenuItem,其密钥等效于CMD+F——它调用以下函数,该函数应该使NSSearchField成为第一响应者。
@IBAction func focusFilter(_ sender: NSMenuItem) {
self.view.window?.toolbar?.items.first(where: { (item) -> Bool in
return item.itemIdentifier.rawValue == "Search"
})?.view?.becomeFirstResponder()
}
按下CMD+F 时,NSSearchField 似乎在很短的时间内成为第一响应者(标题开始向左移动),但随后在焦点环出现之前失去焦点(NSSearchField不会拒绝第一响应者)。
我也尝试使用NSToolbarItem 的menuFormRepresentation.view,结果相同。
如何让NSToolbarItem 成为第一响应者?任何帮助表示赞赏!
【问题讨论】:
-
来自
becomeFirstResponder的文档:“使用 NSWindow makeFirstResponder: 方法,而不是此方法,使对象成为第一响应者。切勿直接调用此方法。”。 -
@Willeke 呃,太简单了!我对 macOS 编程比较陌生,所以有时我会错过明显的东西。非常感谢您为我指明了正确的方向!
标签: swift macos first-responder nstoolbar nstoolbaritem