Простая версия:
- Запишите начальную точку касания на
touchesBegan
. - При каждом вызове
touchesMoved
выполните: - Интерполироватьразумное количество точек (дюжины или около того должно быть достаточно) между начальной точкой касания и текущей точкой касания.
- Для каждой интерполированной точки выполните проверку попадания для ваших «точечных» местоположений.Это может быть сделано путем вычисления линейного расстояния между точкой и местоположением «точки» и подсчета любых расстояний, близких к некоторому порогу, как «попадание».
- Установите начальную точку касания на текущую точку касания.точка.
- На
touchesEnded
выполните один последний раунд интерполяции и проверки удара, а затем очистите начальную точку касания.
Конечновы можете захотеть добавить некоторые собственные расширения в базовый алгоритм, например, сохранить массив всех точек, с которыми вы связались, для проверки в конце события, чтобы помочь отличить скоординированные взаимодействия от случайной бессмыслицы и т. д.