gpt4 book ai didi

swift - NSTouchBar 集成不调用

转载 作者:行者123 更新时间:2023-11-28 07:19:52 26 4
gpt4 key购买 nike

我正在将 TouchBar 支持集成到我的应用程序中。我使用了 Rey Wenderlich 的方法并按如下方式实现了所有内容:

如果 self.touchBarArray 填充了 makeTouchBar() 方法返回 NSTouchBar 对象。如果我打印出一些测试,identifiers 对象将被填充并工作。

不起作用的是 makeItemForIdentifier 方法没有被触发。因此项目不会被创建并且 TouchBar 仍然是空的。

奇怪的行为:如果我在返回 NSTouchBar 对象之前添加 print(touchBar) 和一个断点,它会正常工作并且 TouchBar 会按应有的方式显示(还有 makeItemForIdentifier 函数被触发)。即使它在几秒钟后消失......也很奇怪。

@available(OSX 10.12.2, *)
extension ViewController: NSTouchBarDelegate {
override func makeTouchBar() -> NSTouchBar? {
if(self.touchBarArray.count != 0) {
let touchBar = NSTouchBar()
touchBar.delegate = self
touchBar.customizationIdentifier = NSTouchBarCustomizationIdentifier("com.TaskControl.ViewController.WorkspaceBar")
var identifiers: [NSTouchBarItemIdentifier] = []
for (workspaceId, _) in self.touchBarArray {
identifiers.append(NSTouchBarItemIdentifier("com.TaskControl.ViewController.WorkspaceBar.\(workspaceId)"))
}
touchBar.defaultItemIdentifiers = identifiers
touchBar.customizationAllowedItemIdentifiers = identifiers
return touchBar
}
return nil
}

func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItemIdentifier) -> NSTouchBarItem? {
if(self.touchBarArray.count != 0) {
for (workspaceId, data) in self.touchBarArray {
if(identifier == NSTouchBarItemIdentifier("com.TaskControl.ViewController.WorkspaceBar.\(workspaceId)")) {
let saveItem = NSCustomTouchBarItem(identifier: identifier)
let button = NSButton(title: data["name"] as! String, target: self, action: #selector(self.touchBarPressed))
button.bezelColor = NSColor(red:0.35, green:0.61, blue:0.35, alpha:1.00)
saveItem.view = button
return saveItem
}
}
}
return nil
}
}

最佳答案

self.view.window?.makeFirstResponder(self) in viewDidLoad() 确实解决了问题。

关于swift - NSTouchBar 集成不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513052/

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