如何将动作从 NSToolbar 项目发送到 TabViews 的第一响应者

How to send action from NSToolbar item to First Responder of TabViews

我希望我的 Mac 应用程序的 NSToolbar 项触发第一响应者对象的操作。我有一个具有以下故事板布局的应用程序:

如您所见,window 的工具栏中有一个按钮(测试操作)。它连接到第一响应者对象的动作函数。该功能本身是在 TabView 的第一个视图控制器中实现的。

class ViewController: NSViewController {
    @IBAction func testAction(_ sender: Any) {
        print("testAction")
    }
}

但是该操作永远不会被触发。如果我在 TabViewController 中放置相同的操作,它确实会被触发。

如果我将 TabViewController 的 nextRespodner 属性 设置为 ViewController,它没有帮助:

class TabViewController: NSTabViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        nextResponder = children.first // Does not help
    }
}

不知何故,响应链没有像我预期的那样工作。有人对此有解决方案吗?这是该问题的示例项目:https://github.com/Iomegan/ResponderChainStoryboard

将此添加到 ViewController:

override func viewDidAppear() {
    super.viewDidAppear()
    view.window?.makeFirstResponder(self)
}