Convalidare un trascinamento per un NSCollectionView non si riflette visivamente
-
11-10-2019 - |
Domanda
Ho un NSCollectionView che voglio accettare oggetti trascinati da altrove nella mia applicazione.
I implementare collectionView:validateDrop:proposedIndex:dropOperation:
e collectionView:acceptDrop:index:dropOperation:
nella delegato del CollectionView e registrarsi per l'appropriato trascinato tipi. Entrambi i metodi vengono chiamati bene quando mi trascina i tipi appropriati, ma non ottengono un anello di messa a fuoco blu sopra il CollectionView che indica un peso valido.
provato sia la vista e la sua collezione contenente vista di scorrimento delle impostazioni di default ed esterni per l'anello di messa a fuoco. Entrambi sono solo le classi standard non-derivati ??del cacao. Si chiese se c'era qualcos'altro che dovrei provare. Sicuramente non è necessario creare una sottoclasse NSCollectionView per questo?
Grazie
Chris
Soluzione
Focus anelli non sono in genere il modo corretto di fornire un feedback su destinazioni di trascinamento. Ogni vista lo fa in modo leggermente diverso. NSTextView mostra la barra di inserimento. NSTableView mostra una linea blu tra righe per operazioni Before
goccia, e mostra una lunetta intorno alla riga per operazioni On
goccia. (See NSTableViewDropOperation
)
NSCollectionView mostra un "gap" tra subviews esistenti per mostrare dove gli articoli saranno eliminati operazioni Before
goccia, ed imposterà la proprietà selected
su NSCollectionViewItem per YES
per operazioni On
goccia. (Nota:.. NSCollectionViewItem non fa nulla per impostazione predefinita per rappresentare visibilmente la proprietà selected
È necessario implementare che da soli)
Dato che usi Feedback del NSCollectionView subviews esistente solo, sembra che non c'è alcun feedback a tutti per vuoto NSCollectionView di. Si avrebbe bisogno di una sottoclasse di fornire questo comportamento da soli. Si potrebbe anche presentare un bug per richiedere che NSCollectionView fare questo in sé.