2010-08-30 3 views
3

J'ai une série de sous-classes UIView qui sont ajoutées en tant que sous-vues. Chaque sous-vue peut être déplacée et supprimée. Quand ils sont supprimés (touchEnded), j'ai besoin d'exécuter une méthode dans viewController pour faire un peu de travail. J'ai actuellement le touchEvents manipulé dans chaque classe de subview. Devrais-je gérer ces événements tactiles dans le viewController ou devrais-je passer un pointeur vers le viewController parent en tant que propriété de chaque classe que j'ai ajouté en tant que sous-vues?Traitement de la logique des événements tactiles dans Subview ou ViewController

MISE À JOUR: Ou est-ce un travail pour NotificationCenter?

Répondre

4

UIViewController est une sous-classe de UIResponder, et les instances sont automatiquement insérées dans la chaîne du répondeur derrière les vues qu'elles contrôlent. Par conséquent, vous pouvez implémenter les mêmes méthodes d'événement dans les sous-classes de UIViewController que dans les sous-classes de UIView, et elles fonctionneront simplement; c'est-à-dire qu'ils seront appelés automatiquement.

Donc, si votre contrôleur de vue doit répondre à -touchesEnded:withEvent:, il suffit d'implémenter la méthode directement dans votre sous-classe UIViewController. Si la vue doit également faire quelque chose en réponse à l'événement, vous pouvez toujours lui envoyer un message depuis votre implémentation -touchesEnded:withEvent: (ou autre).

1

Vous pouvez essayer de déléguer l'événement de gestion tactile souhaité de votre sous-classe uiview au contrôleur uiview en utilisant un protocole délégué. Le contrôleur de vue peut se définir en tant que délégué lors de l'instanciation ou de l'ajout de chaque sous-vue. Dans le paradigme MVC, si vous souhaitez gérer un contact spécifique aux composants internes d'une vue en V (aspect/emplacement du bouton), vous pouvez gérer ce contact dans la vue V, mais si le contact affecte un état extérieur la vue (c'est la position dans une fenêtre plus grande, etc.), vous pouvez passer la manipulation qui touche le contrôleur C pour définir l'état dans le modèle M.

Questions connexes