2016-11-21 4 views
0

私はNSTextViewを持っていますので、XcodeのオートコンプリートのようなNSTableViewを使ってオートコンプリートオプションを表示したいと思います。問題は、textViewが最初のレスポンダである場合、tableViewが焦点が合っていない(true)と表示されていますが、それもアクティブであるとふりをしたいと思います。これを達成するための簡単な方法はありますか(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 

次のコードを実装

関連する問題