2010-04-17 7 views
1

Je me demande comment suivre les contacts n'importe où sur l'écran de l'iPhone et que les UIButtons continuent de répondre aux appels.iPhone - comment suivre les contacts et autoriser les appuis sur les boutons en même temps?

J'ai sous-classé un UIView, l'ai fait en plein écran et la vue la plus haute dans la hiérarchie, et ai dépassé sa méthode pointInside: withEvent. Si je retourne OUI, je suis capable de suivre les touches n'importe où sur l'écran mais les boutons ne répondent pas (probablement parce que la vue est chargée de gérer et de terminer le contact). Si je renvoie NON, le contact passe à travers la vue et les boutons répondent, mais je ne suis pas capable de suivre les contacts.

Dois-je sous-classer UIButton ou est-ce possible via la chaîne de répondeur? Qu'est-ce que je fais mal?

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{ 
    return NO; 
} 

//only works if pointInside:withEvent: returns YES. 
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
     NSLog(@"began");  
     [self.nextResponder touchesBegan:touches withEvent:event]; 
} 

//only works if pointInside:withEvent: returns YES. 
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
     NSLog(@"end");  
     [self.nextResponder touchesEnded:touches withEvent:event]; 
} 

Répondre

1

Plutôt que d'avoir vue supplémentaire que vous pouvez créer une sous vos applications fenêtre principale et le suivi des touches (et d'autres événements dans ce)

@interface MyAppWindow : UIWindow 
... 
@implementation MyAppWindow 

- (void)sendEvent:(UIEvent*)event { 
    [super sendEvent:event]; 

    if (event.type == UIEventTypeTouches){ 
     // Do something here 
    } 
    return; 
} 

Ensuite, définissez le type de fenêtre d'application à MyAppWindow (je l'ai fait dans MainWindow .xib dans IB)

+0

Merci, c'est un bon début. J'ai commencé avec succès le suivi des touches dans la fenêtre, mais je voudrais passer le jeu de touches au contrôleur de vue pour gérer les événements tactiles. Ai-je besoin de @ classer la vue ou quelque chose? Le code, si quelqu'un est intéressé: http://pastie.org/924485 –

+0

J'ai le comportement que je cherche. J'ai ajouté les vues que je veux au délégué, qui les ajoute à la fenêtre sur le chargement. J'ai fait une classe @ du contrôleur de vue dans la fenêtre sous-classée, donc je peux contrôler les propriétés de la vue quand les événements tactiles sont enregistrés par la fenêtre. –

Questions connexes