[newbie]Custom class, custom action ?
olof
Membre
Salut à tous,
j'ai l'impression que ce que je veux faire est vraiment basique....
J'ai une matrice (NSMatrix) remplie de cellules (sous-class custom de NSImageCell). Je trappe les clic sur mes cellules en connectant la target de NSMatrix à mon controlleur. Jusque là , tout va bien.
Maintenant, j'aimerais aussi détecter les clic-droit ! Et là , je bloque. Je pense faire ça : créer une sous-classe de NSMatrix et "créer une target" pour gérer ce clic-droit... Sans succès.
Je suis sur qu'il y a un truc tout con, mais je sèche !
Merci !
j'ai l'impression que ce que je veux faire est vraiment basique....
J'ai une matrice (NSMatrix) remplie de cellules (sous-class custom de NSImageCell). Je trappe les clic sur mes cellules en connectant la target de NSMatrix à mon controlleur. Jusque là , tout va bien.
Maintenant, j'aimerais aussi détecter les clic-droit ! Et là , je bloque. Je pense faire ça : créer une sous-classe de NSMatrix et "créer une target" pour gérer ce clic-droit... Sans succès.
Je suis sur qu'il y a un truc tout con, mais je sèche !
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ensuite, tu ajoutes un outlet vers ton controlleur, et tu surcharge rightMouseDown: pour récupérer le clique-droit et envoyer le message au controlleur. Normalement, ca devrait marcher, mais je suis pas totalement sûr.
Bon codage
J'ai ajouté l'outlet suivant dans mon myMatrix.h :
Dans IB, quand je fais une connexion de ma matrice à mon controleur, je vois bien 'myTest' sous Target, Delegate, etc. Par contre, quand je clic dessus, il ne me propose rien pour faire ma connexion. Faut-il créer une action avec une signature spéciale dans le controleur ??
Comme tu définis une action non standard, IB ne peut rien faire pour toi, faut tout faire à la main comme un grand
Dans ta sous classe de NSMatrix
et dans ton controller (défini comme target)
J'essaye ça ce soir !
Merci !
Si je sais lire la doc Apple (ce dont je ne suis pas sur...), NSMatrix n'a pas de methode déléguée. Et si on remonte jusqu'à NSObject, seul NSControl en a, mais aucun n'a quelque chose à voir avec la souris. Est-ce que je sais bien lire la doc ???
Super, ça fonctionne, merci !
Le clic-droit est bien trappé, mais je n'arrive pas à trouver sur quelle celulle le clic a été fait. [NSMatrix selectedCell] me renvoie la dernière cellule que j'ai cliquée avec un clic-gauche...
Y'a un moyen ? Je dois passer par les coordonnées de la souris (j'espère pas...) ???
Merci !
1) Récupérer la position de la cell avec la méthode "getRow:column:forPoint:" (Et oui, il faut récupérer les coordonnées de la souris )
2) Sélectionner la cell avec la méthode "selectCellAtRow:column:"
3) Normalement, tu peux récupérer la cell sélectionnée avec "selectedCell"
Mon premier log me donne la position du curseur dans la fenêtre -> ok
Pas contre, le deuxième me sort toujours -1,-1 !!!
Or getRow:column:forPoint: demande des coordonnées locales à la matrice.
Il te faut donc convertir ces coordonnées (de globales/fenêtre vers locales/matrice) avant de pouvoir les utiliser.
Ceci se réalise via convertPoint:fromView: de NSView :
.
Mon conseil favori :P
Ne pas chercher dans les docs Apple la généalogie des objets!
Utiliser AppKiDo http://homepage.mac.com/aglee/downloads/appkido.html
Tout l'héritage d'un seul coup d'oeil!
C'est tellement plus Cooooooooooooooooooooooooooooool
Antilog, télécharge et je test. Merci !