2017-02-01 2 views
0

J'essaye d'attraper des événements de doubleClick de mon NSOutlineView pour être passé à mon ViewController. Mon idée est d'attraper les événements et doubleClick pour obtenir la ligne sélectionnée de mon OutlineView Ce que je l'ai fait jusqu'à présent été Dérivation de l'NSOutlineView afin d'écraser mouseDownComment attraper des événements doubleClick à partir de NSOutlineView dans ViewController?

override func mouseDown(with event: NSEvent) { 
    super.mouseDown(with: event) 
    if event.clickCount >= 2 { 
     ... 
    } 
} 

Cela fonctionne bien mais je ne sais pas comment passer cet événement à mon ViewController. ViewController est déjà en train d'implémenter le protocole NSOutlineViewDelegate.

Je suppose que la solution n'est pas loin mais en quelque sorte je suis coincé.

+0

Je veux ajouter que je veux aussi sélectionner un ligne si un seul clic se produit. Ensuite, la ligne doit être sélectionnée. Sur un double clic, un autre événement devrait être déclenché. –

+0

Un autre événement en plus de sélectionner la ligne? – Russell

Répondre

1

MISE À JOUR Bien que vous pouvez configurer NSGestureRecognizer pour un simple clic et NSClickGestureRecognizer pour un double-clic dans OSX, vous devriez probablement utiliser la propriété doubleAction du NSOutlineView directement.

Voici un exemple de la façon de le mettre en place enter image description here

Cela vient d'un autre des Wenderlich tutorials, et il y a une bonne discussion sur SO already

+0

Vous pouvez utiliser le geste du robinet dans Cocoa? Je ne le savais pas. –

+0

sorry - J'ai manqué que nous parlions d'OSX, mais vous pouvez utiliser 'NSGestureRecognizer' plutôt que' UIGestureRecognizer'. Jetez un oeil à https://developer.apple.com/reference/appkit/nsgesturerecognizer – Russell

+0

@Russel, merci pour la réponse. Je suis loin de mon Mac, mais si je vous ai bien compris que je dois * instancier un NSClickGestureRecognizer (cible: MyViewController, action: handleGesture) * Ajouter le gestureRecognizer à mon NSOutlineView * Mettre en oeuvre une méthode handleGesture dans MyViewController –