NSCollectionViewItem Aktion doppelklicken Sie auf?
-
20-09-2019 - |
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
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.