2016-11-09 4 views
1

텍스트 필드를 편집하는 동안 터치 바의 자동 텍스트 제안과 함께 사용자 정의 터치 바 항목을 결합하려고합니다. 내가 늘 기본 터치 바는 텍스트 뷰 생성됩니다, 그렇게 할 경우NSTouchBar - 기본 텍스트 파일과 사용자 정의 항목을 결합하는 방법

enter image description here

현재 내가, 사용자 정의를 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를 [모두]로 캐스팅하지 않아도됩니다. 어쨌든, 다시 한번 감사드립니다! 당신은 나를 도왔습니다 –

+0

미안하지만 내 무지,하지만 어떻게해야합니까'super.touchBar (touchBar, makeItemFor : identifier)를 반환합니다'와 같은 목표를 작성해야합니까? – SpaceDog

+0

[슈퍼 터치 바 : touchBar makeItemForIdentifier : 식별자]; – rocky