如何将动作从 NSToolbar 项发送到 TabViews 的第一响应者
Posted
技术标签:
【中文标题】如何将动作从 NSToolbar 项发送到 TabViews 的第一响应者【英文标题】:How to send action from NSToolbar item to First Responder of TabViews 【发布时间】:2018-10-22 12:48:49 【问题描述】:我希望我的 Mac 应用程序的 NSToolbar 项目触发第一响应者对象的操作。我有一个具有以下情节提要布局的应用:
如您所见,窗口工具栏中有一个按钮(测试操作)。它连接到第一响应者对象的动作函数。该函数本身在 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
【问题讨论】:
向视图添加可聚焦控件后,该问题就会消失。 【参考方案1】:将此添加到ViewController
:
override func viewDidAppear()
super.viewDidAppear()
view.window?.makeFirstResponder(self)
【讨论】:
以上是关于如何将动作从 NSToolbar 项发送到 TabViews 的第一响应者的主要内容,如果未能解决你的问题,请参考以下文章