2009-07-31 2 views
0

J'ai essayé cela pour les derniers jours, mais je ne pouvais pas le comprendre.L'événement de la souris n'est pas détecté sur mon NStableview + cacao

J'ai une application qui a un NSOutlineView et un NSTableView. Outlineview prend un chemin d'entrée et les affiche sous la forme d'une arborescence de ses sous-contenus. Ainsi, lorsqu'un utilisateur clique sur un dossier particulier dans la vue Outline, le contenu du dossier doit être affiché dans la vue Table avec ses attributs sous la forme d'une liste.

Maintenant, je suis en mesure d'afficher à la fois les vues du contenu respectif et l'interaction entre le outlineview et tableview est faite en utilisant des délégués et des notifications. Maintenant, mon problème est que je veux avoir des événements de souris à détecter dans les deux vues afin que je puisse rendre mon application plus interactive en permettant un simple clic pour sélectionner, double-cliquer pour activer le fichier/dossier et contrôler + cliquer pour activer un menu contextuel contextuel. mais étrangement aucun événement de souris ne sont détectés.

ma conception de l'application est assez simple avec chacune des vues de tableau et de plan ayant leur propre vue et classe de contrôleur et les interactions entre eux en utilisant les notifications. S'il vous plaît pouvez-vous me suggérer les gars où je vais mal?

Je sais que je peux obtenir un simple clic et un double-clic pour travailler en utilisant les méthodes setAction et DoubleAction de la vue tableau, mais je ne peux pas obtenir le contrôle du clic pour travailler. Je veux savoir ce qui est erroné avec ma conception de l'application comme non de mon point de vue sont la détection d'événements de souris :(

Merci

Répondre

0

Vous pouvez obtenir si le contrôle est pressé avec:

if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask){ 
    //control was pressed at the time the event was posted 
} 

Ou vous voudrez peut-être sous-classe le NSTableView/NSOutlineView et passer outre mouseDown:. pour obtenir directement l'événement

de plus, si votre action et DoubleAction ne fonctionnent pas, vérifiez que la cible/l'action sont corrects avec quelque chose comme:

NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong"); 
Questions connexes