Когда touchesBegan становится touchesMoved?

Вы не должны добавлять их - они содержат настройки в расчете на пользователя, и другие разработчики не захотят Вашу копию.

14
задан Rhythmic Fistman 14 April 2010 в 10:03
поделиться

3 ответа

После запуска события touchesBegan UIKit ищет позиционное движение касания пальца, которое преобразуется в события touchedMoved, поскольку x / y пальца изменяется до тех пор, пока палец не будет поднят и не будет выполнено touchesEnded событие запускается.

Если палец удерживается в одном месте, событие touchMoved не запускается, пока не произойдет движение.

Я создаю приложение, в котором вам нужно рисовать на основе touchMoved, и это действительно происходит с интервалами, но достаточно быстро, чтобы рисовать плавно. Поскольку это событие скрыто в SDK, вам, возможно, придется провести некоторое тестирование в своем сценарии, чтобы увидеть, насколько быстро он реагирует, в зависимости от других действий или событий, которые могут варьироваться в зависимости от ситуации, в которой он используется. По моему опыту, он находится в пределах нескольких миллисекунд движения, и это примерно с 2-3k другими спрайтами на экране.

Рисование действительно начинается с события touchesBegan, хотя первое размещение задается, затем оно связывается с touhesMoved и заканчивается touchesEnd. Я использую все события для операции перетаскивания, так что, возможно, начальное движение в этом случае будет менее запаздывающим.

Чтобы проверить в своем приложении, вы можете поставить отметку времени для каждого события, если оно критично для вашего дизайна, и проработать некоторые вроде облегчения.

http://developer.apple.com/IPhone/library/documentation/UIKit/Reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/touchesMoved:withEvent :

4
ответ дан 1 December 2019 в 16:24
поделиться

Ждет первого хода. Так ОС отличает перетаскивание от касания. После перетаскивания все новые уведомления touchMoved.

Это также причина, по которой вам следует написать код для выполнения при событии касания.

0
ответ дан 1 December 2019 в 16:24
поделиться

Я не представляю какого-либо официального ответа, но имеет смысл, что touchesBegan-> touchesMoved имеет большую продолжительность, чем touchesMoved-> touchesMoved. Разработчикам было бы неприятно, если бы каждое касание Began сопровождалось кучей случайных событий касанияMoved. Apple, должно быть, определила (экспериментально) некоторое расстояние, на котором прикосновение становится тормозом. Как только touchMoved начался, больше нет необходимости проводить этот тест, потому что каждая точка до следующего touchUp гарантированно будет touchMoved.

Кажется, это именно то, что вы говорите в своем исходном посте, Rythmic Fistman и Я просто хотел немного уточнить и сказать, что согласен с вашими рассуждениями. Это означает, что если вы вычисляете какую-то «скорость перетаскивания», вам необходимо использовать пройденное расстояние в качестве фактора,

1
ответ дан 1 December 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: