Попытка повторно коснуться местоположения всегда возвращает ноль (0) в качестве местоположения x.

StackOverflow https://stackoverflow.com/questions/1022187

Вопрос

При написании обработчика touchesBegan для моего представления я столкнулся с этой интересной ошибкой.

Код:

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

Проблема в том, что point.x всегда равен нулю, независимо от того, где я «касаюсь», а y — огромное число, которое колеблется где-то между 1070000000 и 1090000000.

Дескрипторы находятся в классе представления, и они работают так же, как если бы я передал nil вместо self в locationInView.Я также попробовал перебрать все касания, и есть только одно, где x всегда равен нулю.

Так что же я здесь делаю не так?

Это было полезно?

Решение

Если есть шанс, что вы используете NSLog(@"%d, %d", point.x, point.y);распечатать значения точек?Это похоже на ошибку преобразования float -> int.Я использовал locationInView:много, и у меня никогда не было такой проблемы.

Вы также можете попробовать проверить [selfframe], чтобы убедиться, что оно не равно нулю.

Другие советы

Бен прав.Проблема в том, что вы пытаетесь напечатать значение, используя %d в NSLog, потому что point.x и point.y являются значениями с плавающей запятой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top