2009-06-20 3 views
1

Während ich den touchBegan-Handler für meine Ansicht schrieb, stieß ich auf diesen interessanten Fehler.Der Versuch, den Touch an den Ort zu revolutieren, gibt immer null (0) als x-Adresse zurück

Code:

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

Das Problem ist point.x immer Null ist, egal wo ich "touch" und y eine große Zahl ist, die irgendwo zwischen 1070000000 und 1090000000.

Die Griffe flunctuates ist in einer View-Klasse und es funktioniert genauso, wenn ich Nil anstelle von self an locationInView übergebe. Ich habe auch versucht, alle Berührungen zu durchlaufen, und es gibt nur diesen mit x als Null immer.

Also, was mache ich hier falsch?

Antwort

2

Jede Wahrscheinlichkeit, dass Sie NSLog verwenden (@ "% d,% d", point.x, point.y); die Punktwerte auszudrucken? Es klingt irgendwie wie ein float -> int conversion error. Ich habe locationInView verwendet: eine Menge, und ich hatte noch nie so ein Problem.

Sie können auch versuchen, [self frame] zu überprüfen, um sicherzustellen, dass es nicht null ist.

+2

Ich benutze printf ... Was für ein Anfängerfehler. Ich behandle Obj C wie Python wenn es deutlich mehr C ist. – Mikle

0

Ben hat Recht. Das Problem tritt auf, wenn Sie versuchen, den Wert unter Verwendung von %d in NSLog zu drucken, da point.x und point.y Gleitkommawerte sind.