Laquelle de mes 2 vues est active ?
Bonjour
Je n'arrive pas à trouver la bonne méthode pour différencier une vue qui est active et l'autre qui n'y est pas.
En fait, j'ai sousclassé une NSView en y insérant une QTMovieView entre autre. Sur ma fenêtre, j'affiche 2 de mes NSView sousclassées, ce qui fait que j'ai la possibilité de voir 2 séquences video. Seulement, je voudrais que lorsque je clique sur l'une, un repère (comme dessiner une ombre autour de cette vue par exemple) puisse me dire que c'est cette vue qui est active. Et si je clique sur la 2e vue, celle ci devienne ombrée à son tour mais l'autre ne doit plus l'être.
J'ai bien essayé avec les firstRespondeur mais je me suis perdu et finalement, je ne suis pas sur que ce soit la bonne méthode.
Quelle serait la bonne démarche ?
Merci d'avance
Réponses
Je ne sais si ça peut t'aider mais j'ai remarqué que dans la méthode
Si je demande teste si self est le firstResponder, alors il me répond YES systématiquement.
Comme s'il settait le firstResponder avant de gérer le mouseDown.
(teste-le chez toi quand même)
Tu peux t'en sortir avec la méthode
merci Colas2 de ta réponse. Pour mouseDown, j'ai la même remarque mais ça ne peux pas me servir puisque lorsque je clique dans ma NSView et surtout ds ma QTMovieView qui fait parti de ma NSView, le clic est généré directement par QTMovieView. Alors, on pourrait me dire de sousClasser ma QTMovieView mais je suis sûr qu'il y a moyen de faire plus simple.
Sinon, pour le becomeFirstResponder, j'y accède que 2 fois (ce que je ne comprends pas). En fait, lorsque j'importe une video dans ma 1ere NSView, j'y accède une première fois. Egalement quand lorsque j'importe une video ds ma 2e NSVIew, une 2e fois. Mais après, je n'y accède plus jamais, même si je clique sur une des 2 NSView (soit dans une zone ou je n'ai pas de QTMovieView, soit sur QTMovieView).
Tu pourrais gérer à la main la sélection de laquelle de tes NSView, avec un BOOL, dont tu changerais la valeur selon les mouseDown:
Je suis d'accord que c'est pas hyper élégant comme solution, mais c'est rapidement mis en place.
Salut,
Tu utilsie le mouseDown et tu récupère le NSEvent correspondant, ensuite tu récupère le touch position correspondant a l'event et tu teste si sur quelle vue on a clické.
Oui, j'y avais pensé mais je n'ai pas la main (je ne passe pas à mouseDown) sur la partie bleu qui correspond à un QTMovieView (voir photo)...
Bon, voici ce que j'ai trouvé : puisque c'est QTMovieView qui monopolise apparemment le clic, voici comment j'ai contourné mon problème, ça peut intéresser quelqu'un:
Bon c'est peut être pas très classe ! mais ça marche
j'ai placer un testeur dans un timer dans ma sous classe NSView:
et voici le code pour ombrer :
Tu peux essayer le code suivant pour connaitre la vue qui a le focus
En effet, j'avais bien vu cette piste mais je n'ai pas réussit à l'appliquer...
Je vais essayer ta solution
Merci encore