У меня есть NSTextView, и я хочу показать параметры автозаполнения, используя NSTableView (например, автозаполнение Xcode). Проблема в том, что когда textView является первым ответчиком, tableView отображается как нефокусированное (это правда), но я хочу притвориться, что он также активен. Есть ли простой способ достичь этого (имея firstResponder textView и tableView с активным цветом выбора ячейки)?NSTableView претендует быть активным
0
A
ответ
0
Так что мне удалось решить проблему с большим количеством экспериментов. Вот мое решение:
установка NSTableView:
tableView.refusesFirstResponder = true
tableView.selectionHighlightStyle = .none
на NSTableCellView подкласса реализовать следующий код:
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
}
}