0
我有NSTextView,我想显示使用NSTableView的自动完成选项(如Xcode自动完成)。问题是,当textView是第一响应者时,tableView显示为未聚焦(这是真的),但我想假装它也是活动的。有没有一种简单的方法来实现这一点(具有活动单元格选择颜色的firstResponder textView和tableView)?NSTableView假装为活动
我有NSTextView,我想显示使用NSTableView的自动完成选项(如Xcode自动完成)。问题是,当textView是第一响应者时,tableView显示为未聚焦(这是真的),但我想假装它也是活动的。有没有一种简单的方法来实现这一点(具有活动单元格选择颜色的firstResponder textView和tableView)?NSTableView假装为活动
所以我设法解决了很多实验的问题。 这里是我的解决办法:
设置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
}
}