我希望 ViewController ( ContainerVC ) 对子自定义视图 ( ChildView )的点击做出反应。
在ChildView中,我重写mouseDown(_:)
以处理点击。在这种方法中,我尝试通过调用ContainerVC目标NSApp.sendAction(#selector(ContainerVC.childViewClicked(_:)), to: nil, from: self)
。
由于某种原因,该sendAction
方法首先失败(即返回 false)。也NSApp.target(forAction: #selector(ContainerVC.childViewClicked(_:))
为零。
一段时间后(通常是在我疯狂地点击自定义视图一段时间后),目标得到解决,一切正常,ContainerVC.childViewClicked(_:) 被调用。
在目标得到解决的时间/多少次点击之后,我找不到系统模式(除了我对着我的 mac 大喊大叫的强度)。
有趣的是,当我通过let window = NSWindow(contentViewController: ContainerVC())
.
当我将ContainerVC添加到拆分视图时,会发生上述奇怪行为:
self.addSplitViewItem(NSSplitViewItem(viewController: ContainerVC())
我检查了CustomView的响应者链。ContainerVC按预期出现在链中。链中没有其他类实现childViewClicked(_:)。
如果有人能告诉我 NSApp.sendAction(_:) 的内部工作原理以及为什么最初的目标为零,我将不胜感激。
将 ViewController 添加到 SplitView 以正确连接事物时是否需要额外的步骤?