Question

En écrivant le gestionnaire de touchesBegan pour ma vue, j'ai rencontré cette erreur intéressante.

Code:

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

Le problème est que point.x est toujours égal à zéro, peu importe où je "touche" & ";" et y est un nombre énorme qui flotte entre 1070000000 et 1090000000.

Les descripteurs sont dans une classe de vue et fonctionnent de la même manière si je passe nil au lieu de self à locationInView. J'ai aussi essayé de boucler sur toutes les touches, et il n'y a que celle-là avec x toujours égal à zéro.

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

Était-ce utile?

La solution

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

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

Autres conseils

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top