2009-05-09 4 views
1

Je recherche des stratégies, des meilleures pratiques et des solutions pour ajouter une classe personnalisée à la chaîne du répondeur. Cela est venu parce que j'ai réalisé que je manipulais les événements tactiles de la même manière dans plusieurs applications différentes. Pour rendre la vie facile, je voulais déplacer la fonctionnalité dans une classe personnalisée et faire en sorte que cette classe devienne le premier répondant pour les événements tactiles. Comme mes premières idées n'ont pas fonctionné, j'ai réalisé que ce n'était pas une question ad hoc que je pourrais aborder.Classe/Objet iPhone personnalisé dans la chaîne du répondeur

J'ai fait plusieurs tentatives basées sur différents documents, messages, etc que j'ai lus (c'est pourquoi je ne poste pas de source pour le moment). Ma tentative la plus récente provient de UIResponder et a un membre UIView qui stocke un pointeur vers la vue actuelle. Avant de passer trop de temps à «comprendre», je voulais voir si quelqu'un avait des idées. Donc, ma question est «comment puis-je ajouter une classe personnalisée pour être le premier répondeur, spécifiquement pour recevoir des événements tactiles»?

Répondre

0

Votre solution semble étrange parce que UIView est lui-même un UIResponder. Si vous avez un code de gestion d'événements commun, pourquoi ne pas déclarer une catégorie sur UIView ou UIResponder à laquelle vous pourrez alors accéder depuis toutes vos sous-classes UIView (ou UIResponder), y compris UIApplication, UIWindow et UIControl.

+0

Roger, Parce que je ne savais pas quelle catégorie était jusqu'à ce que je lis votre message/réponse. Cela a fonctionné. Je vous remercie. –

2

En utilisant la suggestion de Roger, la solution que je utilise ressemble à ceci:

Déclaration (touchmyself.h)

#import <UIKit/UIViewController.h> 
@interface UIViewController (TouchMyself) 
    - (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event; 
    - (void) touchesMoved: (NSSet *) touches withEvent: (UIEvent *) event; 
    - (void) touchesEnded: (NSSet*) touches withEvent: (UIEvent*) event; 
    - (void) touchesCancelled: (NSSet*)touches withEvent: (UIEvent*) event; 
@end 

mise en œuvre (touchmyself.m)

#import "touchmyself.h" 
@implementation UIViewController (TouchMyself) 
- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event 
{ 
    // Do Stuff 
} 

... 
@end 

Déclarations des consommateurs (some_view_controller.h)

@interface ViewSwitchBox : UIViewController 
{ 
    // Declare Stuff 
} 

Après avoir lu quelques docs concernant les catégories, le chapitre 1.5 "Développement d'applications iPhone SDK" le met en perspective.

-isdi-

+0

Accessoires pour appeler la catégorie "TouchMyself". C'est hilarant :) – jheriko

Questions connexes