iOS обнаруживает круговые касания (по часовой стрелке и против часовой стрелки) - PullRequest
2 голосов
/ 27 декабря 2010

Я работаю над образовательным приложением для iOS / iPad, которое будет отображать часы двумя стрелками (час и минута).Когда пользователь крутит палец на циферблате, я хочу переместить время вперед или назад.Это будет жест одним пальцем или вращающееся движение.

Есть идеи о том, как определить, вращает ли пользователь палец по часовой стрелке или против часовой стрелки вокруг круглого циферблата?

Я думал о расчетеугол, затем переводить угол в «раздел», скажем, 30 градусов.Затем следите за схемой секций, которые срабатывают.

Просто интересно, есть ли у кого-нибудь решение "веера", которое я не рассматриваю?Может быть, что-нибудь элегантное?

Спасибо.

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Вам нужно сохранить как минимум три точки, а затем просто рассчитать площадь «треугольника», который они образуют.

CGPoint a = lastStart;
CGPoint b = start;
CGPoint c = end;
float area = a.x * b.y - a.y * b.x + a.y * c.x - a.x * c.y + b.x * c.y - c.x * b.y; 

if(area > 0) {
  // you're moving CCW
}
0 голосов
/ 27 декабря 2010

Сделайте начальную точку жеста номинальной 0,0 и разделите экран на четыре квадранта так, чтобы оси X и Y проходили через ваш номинальный 0,0.Обратите внимание, какие секторы посещаются, в свою очередь.После первых двух у вас есть направленность:

       Movement into lower right quadrant followed by movement into upper right is counterclockwise
       Movement into lower right quadrant followed by movement into lower left is clockwise
       Movement into lower left quadrant followed by movement into lower right is counterclockwise
       Movement into lower left quadrant followed by movement into upper left is clockwise
       Movement into upper left quadrant followed by movement into lower left is counterclockwise
       Movement into upper left quadrant followed by movement into upper right is clockwise

       etc etc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...