1

我正在尝试在编辑文本字段时将我的自定义触摸栏项目与触摸栏中的自动文本建议结合起来。

在此处输入图像描述

目前我正在自定义 NSTextView 类中覆盖 makeTouchBar,如果我不这样做,将为 textView 创建默认触摸栏。

这是主要的 makeTouchBar,我尝试在其中添加带有项目标识符的建议.candidateList,但没有运气:

extension ViewController: NSTouchBarDelegate  {
    override func makeTouchBar() -> NSTouchBar? {

        let touchBar = NSTouchBar()

        touchBar.delegate = self

        touchBar.customizationIdentifier = .myBar

        touchBar.defaultItemIdentifiers = [.itemId1, 
                .flexibleSpace, 
                .itemId2, 
                .itemId3, 
                .flexibleSpace, 
                .candidateList]

        touchBar.customizationAllowedItemIdentifiers = [.itemId1]

        return touchBar
    }
}

有人可以提供一个简单的例子来说明如何将这个词建议项添加到自定义触摸栏吗?

4

1 回答 1

1

简单的。只需在您的自定义 NSTextView 类中调用 super :

override func makeTouchBar() -> NSTouchBar {
    var touchBar = super.makeTouchBar()
    touchBar.delegate = self
    var defaultIdentifiers = [Any](arrayLiteral:touchBar.defaultItemIdentifiers)
    defaultIdentifiers.insert("CustomLabel", at: 0)
    touchBar.defaultItemIdentifiers = defaultIdentifiers
    return touchBar
}

override func touchBar(_ touchBar: NSTouchBar, makeItemFor identifier: NSTouchBarItemIdentifier) -> NSTouchBarItem {
    if (identifier == "CustomLabel") {
        var button = NSButton(title: "Custom", target: self, action: nil)
        var item = NSCustomTouchBarItem(identifier: "CustomLabel")
        item.view = button
        item.customizationLabel = "Custom"
        return item
    }
    else {
        return super.touchBar(touchBar, makeItemFor: identifier)
    }
    return nil
}
于 2016-11-09T22:24:12.647 回答