Domanda

Come posso impostare un'azione per quando un utente fa doppio clic su un file NSCollectionViewItem. NSTableView, ad esempio, ha il setDoubleAction metodo.C'è qualcosa di simile per NSCollectionView?

Grazie

È stato utile?

Soluzione

Si sarebbe probabilmente desidera gestire questo nella vostra NSCollectionViewItem, piuttosto che la NSCollectionView in sé (per lavorare fuori il vostro analogia NSTableView).

Altri suggerimenti

So che questa domanda è antica, ma in questo momento appare come il terzo risultato su Google e ho trovato un metodo diverso e molto semplice che non ho visto documentato altrove.(Non ho solo bisogno di manipolare l'elemento rappresentato, ma ho un lavoro più complesso da svolgere nella mia app.)

NSCollectionView eredita da NSView, quindi puoi semplicemente creare una sottoclasse personalizzata e sovrascriverla mouseDown.Questo non è del tutto privo di insidie: devi controllare il conteggio dei clic e convertire il punto dalla finestra principale alle coordinate della vista della raccolta, prima di utilizzare NSCollectionView'S indexPathForItem metodo:

override func mouseDown(with theEvent: NSEvent) {
    if theEvent.clickCount == 2 {
        let locationInWindow = theEvent.locationInWindow
        let locationInView = convert(locationInWindow, from: NSApplication.shared.mainWindow?.contentView)


        if let doubleClickedItem = indexPathForItem(at: locationInView){
        // handle double click - I've created a DoubleClickDelegate 
        // (my collectionView's delegate, but you could use notifications as well)
...

Mi sembra di aver finalmente trovato il metodo che Apple intendeva utilizzare, altrimenti non ce n'è motivo indexPathForItem(at:) esistere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top