2011-11-15 6 views
0

J'ai une fenêtre (NSWindow) avec une série de vues. L'une de ces vues accepte les événements mouseMove. Je veux être en mesure de connecter une ligne entre deux vues différentes avec la souris. Donc, ce que j'ai fait, est créé une plus grande vue qui couvre toute la fenêtre et je dessine ma ligne dans cette vue. Cela fonctionne bien. Le problème est que si j'autorise ma plus grande vue, qui se chevauche, à accepter les événements mouseMove pour que la ligne suive le curseur, alors ma vue visible cesse de recevoir les événements mouseMove. C'est un problème parce que je veux que certains objets "s'allument" sur la vue sous-jacente quand ma souris les survole et je le fais dans la méthode mouseMove de cette vue.Réponse aux événements mouseMove dans les vues empilées

Comment appeler les méthodes mouseMove dans la vue invisible et la vue visible ci-dessous?

Répondre

0

Vous pouvez faire en sorte que la méthode mouseMove de la vue superposée envoie la méthode mouseMove à la vue sous-jacente.

+0

Merci, cela fonctionne! Je viens d'accéder à mon autre vue via [[[self window] windowController] myOtherView] mouseMoved: theEvent] et maintenant les deux vues répondent à mouseMoved. –

1

vérifiez les options que vous utilisez pour initialiser votre NSTrackingArea ... si je me souviens bien, vous devriez être capable d'utiliser NSTrackingActiveAlways et d'obtenir les événements de la souris si vous êtes le premier répondeur ou non. il ne devrait pas d'importance si vos points de vue sont empilés, tant qu'ils enregistrent leurs propres zones de suivi, ils devraient recevoir les événements ...

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTrackingArea_class/Reference/Reference.html

Questions connexes