Swift 在Xcode操场中实现触摸栏功能
如何在仅使用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
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
,使其能够处理触摸栏。也没有必要担心应用程序代理