2016-11-21 23 views
0

저는 NSTextView를 가지고 있으며 NSCable (Xcode 자동 완성과 같은)을 사용하여 자동 완성 옵션을 표시하려고합니다. 문제는 textView가 첫 번째 응답자 일 때 tableView가 초점이 맞지 않는 것으로 표시된다는 것입니다 (사실입니다).하지만이 또한 활성 상태 인 것처럼 가장합니다. 이것을 달성하는 쉬운 방법이 있습니까 (firstResponder textView 및 활성 셀 선택 색상이있는 tableView 사용)?NSTableView가 활성화 된 것으로 보입니다.

답변

0

그래서 나는 많은 실험을 통해이 문제를 해결할 수있었습니다.

설정 NSTableView는 :

override func awakeFromNib() { 
    super.awakeFromNib() 

    registerNotifications() 
} 

deinit { 
    unregisterNotifications() 
} 

private func registerNotifications() { 
    NotificationCenter.default.addObserver(self, 
              selector: #selector(selectionIsChanging), 
              name: NSNotification.Name.NSTableViewSelectionIsChanging, 
              object: nil) 
} 

private func unregisterNotifications() { 
    NotificationCenter.default.removeObserver(self) 
} 

@objc private func selectionIsChanging() { 
    if let row = superview as? NSTableRowView, row.isSelected == true { 
     self.backgroundColor = NSColor.alternateSelectedControlColor 
    } else { 
     self.backgroundColor = NSColor.clear 
    } 
} 
:

NSTableCellView 서브 클래스에
tableView.refusesFirstResponder = true 
tableView.selectionHighlightStyle = .none 

는 다음과 같은 코드를 구현 여기 내 솔루션입니다