2009-06-20 6 views
1

내 뷰에 touchesBegan 핸들러를 쓰는 동안이 재미있는 오류가 발생했습니다.위치로 터치하려고하면 x 위치로 항상 0이 반환됩니다.

코드 :

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

문제는 내가 "터치"와 y 어딘가에

1,070,000,000 사이 1090000000. 핸들을 flunctuates 큰 수이다 point.x 상관없이 항상 0입니다입니다 뷰 클래스에 있으며 locationInView에 자기 대신 nil을 전달하는 것과 동일하게 작동합니다. 나는 또한 모든 터치를 반복 해 보았습니다. x가 항상 0 인 것은 하나뿐입니다.

여기서 내가 뭘 잘못하고 있니?

답변

2

NSLog (@ "% d, % d", point.x, point.y)를 사용하고있을 가능성이 있습니다. 포인트 값을 출력 하시겠습니까? 그것은 일종의 float -> int 변환 오류와 같은 소리. locationInView를 많이 사용했는데 이런 문제는 한번도 없었습니다.

[자체 프레임]을 확인하여 0이 아닌지 확인해보십시오.

+2

저는 printf를 사용하고 있습니다 ... 신참 한 실수입니다. 나는 분명히 더 많은 C가있을 때 파이썬처럼 obj를 다루고있다. – Mikle

0

벤이 맞습니다. 문제는 을 NSLog에 사용하여 값을 인쇄하려고 할 때입니다. 왜냐하면 point.xpoint.y은 부동 소수점 값이기 때문입니다.