gpt4 book ai didi

macos - Touchbar 和 NSPoover 窗口

转载 作者:行者123 更新时间:2023-12-03 16:20:06 24 4
gpt4 key购买 nike

我有一个 NSPopover 窗口,我想向其中添加触摸栏支持。我已经成功实现了对标准 NSWindow 的触摸栏支持,但是对我的弹出框执行相同的过程不会导致任何触摸栏项目出现在 xCode 触摸栏模拟器中。

我正在 NSViewController 中实现 makeTouchbarNSTouchBarDelegate,它以 NSPopover 的形式呈现。 makeTouchBar 和委托(delegate)函数正在被调用,但触摸栏中没有显示任何内容(在下面的代码块中,触摸栏和提示都在记录)。

我担心 NSPopover 窗口不会触发触摸栏作为事件应用程序,即使它具有键盘焦点。如何显示 NSPopover 窗口的触摸栏项目?

//MARK: Touch bar
@available(OSX 10.12.1, *)
override func makeTouchBar() -> NSTouchBar? {
Swift.print("Touchbar.")

let touchBar = NSTouchBar()
touchBar.delegate = self
touchBar.customizationIdentifier = .touchBar
touchBar.defaultItemIdentifiers = [.tbHint, .colourC]

return touchBar

}

@available(OSX 10.12.1, *)
extension RememberViewController: NSTouchBarDelegate {

func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItemIdentifier) -> NSTouchBarItem? {

switch identifier{
case NSTouchBarItemIdentifier .tbHint:
Swift.print("hint")
let buttonView = NSCustomTouchBarItem(identifier: identifier)
let button = NSButton(title: "Hint", target: self, action: #selector(showHint))
buttonView.view = button
return buttonView

case NSTouchBarItemIdentifier .colourC:
let colorPicker: NSColorPickerTouchBarItem
colorPicker = NSColorPickerTouchBarItem.colorPicker(withIdentifier: identifier)

colorPicker.customizationLabel = "Color Picker"
colorPicker.target = self
colorPicker.action = #selector(showHint)

return colorPicker

default:
return nil
}


}
}

最佳答案

查看 NSTouchBar Catalog Sample来自苹果。最新版本有一个完全适合您的用例的示例。它称为背景窗口(您必须通过构建的应用程序中的窗口菜单显示它)。

enter image description here

他们正在 Storyboard中加载带有 NSPopover segue 的 BackgroundImagesViewController 并创建 NSTouchBar,如下所示:

@available(OSX 10.12.2, *)
class BackgroundImagesViewController: NSViewController {
override func makeTouchBar() -> NSTouchBar? {
let touchBar = NSTouchBar()
touchBar.delegate = self
touchBar.customizationIdentifier = .scrubberBar
touchBar.defaultItemIdentifiers = [.imageScrubber]
touchBar.customizationAllowedItemIdentifiers = [.imageScrubber]
touchBar.principalItemIdentifier = .imageScrubber

return touchBar
}
}

最好的办法是查看 Apple 的示例文件。

关于macos - Touchbar 和 NSPoover 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493349/

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