Swift 在Xcode操场中实现触摸栏功能

Swift 在Xcode操场中实现触摸栏功能,swift,xcode,swift-playground,nstouchbar,Swift,Xcode,Swift Playground,Nstouchbar,如何在仅使用Xcode操场的情况下实现NSTouchBar?我意识到NSTouchBar,及其附带的方法,包括makeTouchBar()包含在NSResponder类中,该类是NSView、NSViewController、NSWindow和SKView的超类 正是因为这个原因,我有点不确定如何接近触摸栏。NSResponder的子类太多了,我不确定哪一个是正确的。据我所知,我甚至无法访问所有这些工具,包括操场的NSWindow,我怀疑这可能是我需要访问的工具 我当前的设置是: let con

如何在仅使用Xcode操场的情况下实现
NSTouchBar
?我意识到
NSTouchBar
,及其附带的方法,包括
makeTouchBar()
包含在
NSResponder
类中,该类是
NSView
NSViewController
NSWindow
SKView
的超类

正是因为这个原因,我有点不确定如何接近触摸栏。
NSResponder的子类太多了,我不确定哪一个是正确的。据我所知,我甚至无法访问所有这些工具,包括操场的
NSWindow
,我怀疑这可能是我需要访问的工具

我当前的设置是:

let containerView = SKView()
PlaygroundPage.current.liveView = containerView
let containterScene = SKScene()
containerView.presentScene(containterScene)
在检查应答器链时,对于SKView,我得到:

<SKScene> name:'(null)' frame:{{-250, -250}, {500, 500}} anchor:{0.5, 0.5}
name:'(null)帧:{{-250,-250},{500500}锚定:{0.5,0.5}
对于场景:

<SKView: 0x7fba36037a00>
<NSView: 0x7fba32d6fe80>
<PlaygroundViewBridgeService: 0x7fba32d569e0>
<NSNextStepFrame: 0x7fba32d76e20>
<NSWindow: 0x7fba32e177e0>

出于某种原因,SKScene和SKView不在同一个链中,我似乎无法访问任何高于SKView的响应程序。是否有办法扩展现有的
NSWindow
的功能

另一个问题是,许多关于使用触摸栏的教程都要求访问AppDelegate,而我认为Xcode情节提要中没有


在故事板中实现触摸栏的任何帮助都将不胜感激。

解决方案实际上非常简单。创建
NSViewController
的自定义子类,并在其中实现触摸栏覆盖功能

然后实现上述代码:

let containerView = CustomSKView()
let containterScene = CustomSKScene()
containerView.presentScene(containerScene)
添加以下内容

let containerViewController = CustomNSViewController()
containerViewController.view = containerView
PlaygroundPage.current.liveView = containerViewController.view
这将在响应器链中设置自定义的
NSViewController
,使其能够处理触摸栏。也没有必要担心应用程序代理