J'ai un UIViewController dont la vue est dotée d'une sous-vue personnalisée.Notification du contrôleur de vue lors d'événements tactiles de sous-vue
Cette sous-vue personnalisée doit suivre les événements tactiles et signaler les mouvements de balayage.
Actuellement, je mets touchesBegan, touchesMoved, touchEnded et touchCancelled dans la classe subview. Avec une certaine logique supplémentaire, je suis capable d'obtenir des gestes de balayage et d'appeler mes méthodes handleRightSwipe et handleLeftSwipe. Alors maintenant, quand je balaye dans la sous-vue, il appelle ses méthodes de manipulation de balayage local. Tout cela fonctionne très bien.
Mais ce dont j'ai vraiment besoin, c'est que les méthodes handleRightSwipe et handleLeftSwipe soient dans le contrôleur de vue. Je pourrais les laisser dans la classe de subview mais alors je devrais apporter toute la logique et les données aussi bien et ce genre de casse l'idée de MVC.
Alors, ma question est: y a-t-il un moyen propre de gérer cela? Essentiellement je veux garder mes méthodes d'événements tactiles dans la sous-vue afin qu'elles se déclenchent uniquement pour cette vue spécifique. Mais je veux également que le contrôleur de vue soit informé lorsque ces événements tactiles (ou dans ce cas des gestes de balayage) se produisent.
Des idées?
Merci.
MISE À JOUR:
En utilisant la suggestion de Henrik, voici un échantillon rapide de ce que je l'ai fait (pour vous épargner la lecture):
Je mets mon contrôleur de vue à titre d'observateur des notifications (très tôt) .
// NOTIFICATION_LEFT_SWIPE is defined as some unique string elsewhere.
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
// Note that imageView is the instance of my subview that is calling the notification.
// You can set this to nil if you don't want it to be specific.
[nc addObserver:self selector:@selector(handleLeftSwipe) name:@NOTIFICATION_LEFT_SWIPE object:imageView];
Ensuite, j'implémente la méthode handleLeftSwipe. Cela sera appelé quand une notification est reçue.
Maintenant, dans mon sous-vue j'envoyer une notification lors de la réception d'un geste de balayage:
// Note that NOTIFICATION_LEFT_SWIPE is the same one used in the view controller
// I put this in a global header I use. This is how you keep track of notifications.
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@NOTIFICATION_LEFT_SWIPE object:self];
Et de même pour la glisser vers la droite.
Ah merci monsieur! Cela a fonctionné parfaitement. Je n'ai même pas entendu parler du centre de notification avant mais il fait exactement ce dont j'avais besoin. – nebs