Frage

Wie kann ich eine Aktion für, wenn ein Benutzer doppelklickt ein NSCollectionViewItem. NSTableView, beispielsweise hat die setDoubleAction Methode. Gibt es etwas ähnliches für NSCollectionView?

Danke

War es hilfreich?

Lösung

Sie würden wahrscheinlich wollen dies in Ihrem NSCollectionViewItem behandeln, anstatt die NSCollectionView selbst (auf Arbeit ab NSTableView Analogie).

Andere Tipps

Ich weiß, diese Frage ist alt, aber es kommt jetzt als drittes Ergebnis auf Google, und ich habe eine andere und sehr einfache Methode gefunden, dass ich nicht an anderer Stelle dokumentiert gesehen. (I brauchen nicht nur die dargestellten Artikel zu manipulieren, haben aber komplexere Arbeiten in meiner app zu tun.)

NSCollectionView erbt von NSView, so können Sie einfach eine benutzerdefinierte Unterklasse und überschreiben mouseDown erstellen. Das ist nicht ganz ohne Tücke - müssen Sie die Klickanzahl, zu prüfen und den Punkt aus dem Hauptfenster zu Ihrer Sammlung Ansicht konvertieren ist zu koordinieren, bevor NSCollectionView des indexPathForItem Methode:

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

Das fühlt sich an, als ob ich habe schließlich die Methode von Apple gefunden sollen verwendet werden - sonst gibt es keinen Grund für indexPathForItem(at:) zu existieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top