2010-04-07 11 views
0

nous avons le code suivant snippetsMlle un seul robinet au hasard

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 
    NSUInteger numberTaps = [touch tapCount]; 

    // Tapping 
    if (numberTaps > 0) { 
     // do something 
    } 

... 

Le code ci-dessus détecte fondamentalement une simple pression sur une petite image (largeur = 18 et hauteur = 36). Cela fonctionne 90% du temps en détectant un seul robinet.

Mais il manque parfois (aléatoirement). Je dois taper plusieurs fois avant de prendre le robinet.

Qu'est-ce que j'ai fait de mal ou de manquer afin que je puisse détecter de manière cohérente le seul robinet 100%?

+0

Comment savez-vous ce n'est pas seulement la nature du matériel? – Pyrolistical

+0

Bon point. Mais il semble que d'autres applications fonctionnent bien. – pion

+0

** Pour déboguer ** ce problème, vous pouvez remplacer '- [UIApplication sendEvent:]' dans une catégorie sur 'UIApplication' appelant l'implémentation réelle en utilisant [l'implémentation superséquente] de Matt Gallagher (http://www.cocoawithlove.com/ 2008/03/supersequent-implementation.html). Cela vous permettra de récupérer l'événement créé lorsque vous taperez sur l'écran et obtiendrez toutes les touches associées (via '- [UIEvent allTouches]'). Depuis l'UITouch (il y en a probablement un dans le 'NSSet' renvoyé par' allTouches'), vous pouvez voir que le contact était activé en utilisant '- [UITouch view]'. –

Répondre

1

Il est possible que vous manquiez le robinet car votre doigt n'est pas assez précis pour toujours atteindre l'endroit approprié sur le matériel. J'ai de petites images dans mon application qui peuvent être exploitées, et elles me manquent souvent. Essayez d'agrandir l'image pour vérifier qu'elle fonctionne toujours. Vous pouvez artificiellement agrandir une image avec un espace vide autour pour la rendre plus précise.