2016-11-09 3 views
1

テキストフィールドを編集するときに、カスタムタッチバーアイテムをタッチバーの自動テキスト候補と共に組み合わせようとしています。NSTouchBar - 既定のテキストファイルアイテムをカスタムアイテムと結合する方法

enter image description here

私は文句を言わない、デフォルトのタッチバーがTextViewのために作成されますが、それを行う場合には現在、私は、カスタムNSTextViewクラスでmakeTouchBarをオーバーライドしています。

これは私がアイテム識別子.candidateListが、運に提案を追加しようとする主なmakeTouchBar、次のとおりです。

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 
    } 
} 

誰かがカスタムに、この言葉の提案項目を追加する方法の簡単な例を提供することができますタッチバー?

答えて

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 
} 
+0

ありがとう!これは、スーパーからテキストフィールドのタッチバーを取得すると働いた。あなたの答えにはいくつかの行があります。touchBar()はnilを返すことができず、touchBar.defaultItemIdentifiersを[Any]にキャストしなければなりませんでした。とにかく、もう一度ありがとう!あなたは私を助けました) –

+0

ごめんなさい、私の無知ですが、どのように 'return super.touchBar(touchBar、makeItemFor:identifier)'のように書くべきでしょうか? – SpaceDog

+0

戻り値[super touchBar:touchBar makeItemForIdentifier:identifier]; – rocky

関連する問題