Question

Comment puis-je définir une action lorsque un double utilisateur clique un de NSCollectionViewItem. NSTableView, par exemple, a la méthode de setDoubleAction. Y at-il quelque chose de similaire pour NSCollectionView?

Merci

Était-ce utile?

La solution

Vous voudrez probablement gérer cela dans votre NSCollectionViewItem, plutôt que le NSCollectionView lui-même (pour travailler votre analogie NSTableView).

Autres conseils

Je sais que cette question est ancienne, mais il arrive que le troisième résultat sur Google en ce moment, et je l'ai trouvé une méthode différente et très simple que je ne l'ai pas vu ailleurs documenté. (Je ne suis pas juste besoin de manipuler l'élément représenté, mais qui ont un travail plus complexe à faire dans mon application.)

NSCollectionView hérite de NSView, de sorte que vous pouvez simplement créer une sous-classe personnalisée et passer outre mouseDown. Ce n'est pas tout à fait sans pièges - vous devez vérifier le nombre de clics, et convertir le point de la fenêtre principale à votre collection Vue de coordonnées, avant d'utiliser la méthode de NSCollectionView de indexPathForItem:

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)
...

Cela se sent comme si je l'ai finalement trouvé la méthode d'Apple destiné à être utilisé - sinon, il n'y a aucune raison pour indexPathForItem(at:) d'exister.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top