gpt4 book ai didi

swift - 在 Xcode Playgrounds 中实现 TouchBar 功能

转载 作者:可可西里 更新时间:2023-11-01 02:05:27 34 4
gpt4 key购买 nike

如何在仅使用 Xcode Playgrounds 的情况下实现 NSTouchBar?我意识到 NSTouchBar 及其附带的方法包括 makeTouchBar() 包含在 NSResponder 类中,它是 NSView 的父类(super class)NSViewControllerNSWindowSKView(NSView 的子类。)

正是出于这个原因,我有点不确定如何访问 TouchBar。 NSResponder 的子类太多了,我不确定哪一个是正确的。据我所知,我什至无法访问所有这些,包括 Playground 的 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}

对于 SKScene:

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

由于某些原因,SKScene 和 SKView 不在同一个链中,我似乎无法访问任何高于 SKView 的响应者。有没有办法扩展现有的 NSWindow 的功能?

另一个问题是许多关于使用 TouchBar 的教程需要访问 AppDelegate,我认为 Xcode Storyboards 中没有。

如能提供在 Storyboards 中实现 TouchBar 的任何帮助,我们将不胜感激。

最佳答案

解决方法其实很简单。创建 NSViewController 的自定义子类并在其中实现 TouchBar 覆盖功能。

然后执行上面的代码:

let containerView = CustomSKView()
let containterScene = CustomSKScene()
containerView.presentScene(containerScene)

添加了以下内容。

let containerViewController = CustomNSViewController()
containerViewController.view = containerView
PlaygroundPage.current.liveView = containerViewController.view

这会在响应链中设置您的自定义 NSViewController,允许它处理 Touch Bar。也无需担心 App Delegate。

关于swift - 在 Xcode Playgrounds 中实现 TouchBar 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150641/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com