Выбрать элемент в NSCollectionView на mouseDown, а не на mouseUp?

Я хотел бы сделать так, чтобы поведение выбора моего NSCollectionView соответствовало представлению значков в Finder. Finder будет выбирать и выделять элементы при нажатии кнопки мыши, но встроенное поведение NSCollectionView, по-видимому, использует мышь для запуска выбора.

Есть ли способ заставить NSCollectionView действовать как Finder в этом отношении?


person orion    schedule 09.04.2018    source источник
comment
Если ваша цель — просто предоставить визуальную обратную связь, изучили ли вы свойство NSCollectionViewItem.highlightState? А именно дело forSelection?   -  person pfandrade    schedule 10.04.2018
comment
Хм, да, это работает... Я не знал, что состояние выделения будет установлено в forSelection до того, как выбор действительно произойдет. Благодарю вас! Добавлен следующий код: override var highlightState: NSCollectionViewItemHighlightState{ didSet{ if highlightState == .forSelection{ self.showSelectedHighlight() } } }   -  person orion    schedule 10.04.2018


Ответы (1)


Согласно комментарию pfandtrade выше, похоже, что состояние подсветки NSCollectionViewItem будет изменено до того, как этот элемент будет выбран.

mouseDown = для параметра HighlightState NSCollectionViewItem установлено значение forSelection

mouseUp = NSCOllectionViewItem's highlightState имеет значение none, но свойство isSelected затем устанавливается в true.

Я добавил следующее в свой подкласс NSCollectionViewItem:

override var highlightState: NSCollectionViewItemHighlightState{
    didSet{
        if self.highlightState == .forSelection{
            self.showSelectedHighlight() //my stylization function
        }
    }
}
person orion    schedule 10.04.2018