Как я могу отключить выделение прямоугольника рисования в NSCollectionView? - PullRequest
0 голосов
/ 05 января 2012

У меня NSCollectionView запущен и работает довольно хорошо с NSArrayController.Мои элементы представления коллекции настроены для множественного выбора, и я доволен этим.Однако когда событие перетаскивания мыши происходит в представлении коллекции, прямоугольник выбора рисуется.Как отключить рисование прямоугольника выделения и сохранить несколько выделений в моем NSCollectionView?Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 17 марта 2012

NSCollectionView - довольно непрозрачный класс, не так уж много способов легко изменить его фундаментальное поведение.

По-видимому, действия перетаскивания обрабатываются закрытым методом _performDragFromMouseDown:, а не путем переопределения mouseDragged:. Точно, что частный метод делает, я не уверен.

Простой ответ заключается в том, что вы не можете изменить внешний вид выделения, кроме как путем изменения закрытых методов NSCollectionView.

Возможно, вам придется использовать пользовательское представление вместо NSCollectionView, если вам нужно изменить это поведение.

0 голосов
/ 18 сентября 2017

С последней версией NSCollectionView (выпущенной в 2015 году, я думаю?) он вызывает viewForSupplementaryElementOfKind для делегата, чтобы получить представление для рисования прямоугольника выбора.

Вы можете «поймать» эту ситуацию, сравнив kind.rawValue с "NSCollectionElementKindSelectionRectIndicator" в делегате и return NSView() , если вы не хотите, чтобы он рисовал .

Если вы делаете хотите нарисовать его, верните collectionView.makeSupplementaryView(ofKind:, используя вид / идентификатор, сделанные вручную с использованием rawValue "NSCollectionElementKindSelectionRectIndicator".Я считаю, что эти виды / идентификаторы отсутствуют в перечислениях с 2015 года, и каждый раз, когда я внедряю NSCollectionView, я испытываю гореФорумы разработчиков Apple, и я упомянул, что я должен был защититься от numberOfSections == 0 и return NSView() в этом случае.

...