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 に答える