2009-06-20 10 views
1

Lors de l'écriture du gestionnaire touchesBegan, j'ai rencontré cette erreur intéressante.Si vous tentez de modifier le contact avec l'emplacement, le point zéro (0) est toujours 0 x

code:

... 
UITouch *touch = [touches anyObject]; 
CGPoint point = [touch locationInView:self]; 
... 

Le problème est point.x est toujours égale à zéro, peu importe où je "toucher" et y est un grand nombre qui flunctuates quelque part entre 1070000000 et 1090000000.

Les poignées est dans une classe de vue et cela fonctionne de la même manière que je passe nil au lieu de self à locationInView. J'ai aussi essayé de boucler toutes les touches, et il n'y en a qu'une avec x comme zéro toujours.

Alors qu'est-ce que je fais mal ici?

Répondre

2

Toute chance que vous utilisez NSLog (@ "% d,% d", point.x, point.y); imprimer les valeurs de points? Cela ressemble un peu à une erreur de conversion float -> int. J'ai utilisé locationInView: beaucoup, et je n'ai jamais eu de problème comme celui-ci.

Vous pouvez également essayer de vérifier [self frame] pour vous assurer qu'il est différent de zéro.

+2

J'utilise printf ... Quelle erreur de débutant. Je continue à traiter obj C comme Python quand il est clairement plus C. – Mikle

0

Ben a raison. Le problème est lorsque vous essayez d'imprimer la valeur en utilisant %d dans NSLog, car point.x et point.y sont des valeurs flottantes.

Questions connexes