Как получить позицию касания с постоянной скоростью? - PullRequest
0 голосов
/ 28 января 2011

Я пишу эксперимент времени реакции на iPad.UIEvent / UITouch дал мне несколько событий, около 60 в секунду, когда субъект перемещает палец по экрану в цикле «touchMoved», но, к сожалению, не с постоянной скоростью.Когда пользователь перестал двигать пальцем, touchMoved даже перестает запускать события.Мне нужен способ, чтобы фиксировать положение касания с постоянной скоростью, скажем, каждые 20 или 40 миллисекунд.

И второй вопрос: насколько точна метка времени события касания?

Ответы [ 3 ]

0 голосов
/ 28 января 2011

Вы можете настроить NSTimer для вызова метода, скажем storeTouches, через определенные интервалы:

NSTimer *tUpdate;
NSTimeInterval tiCallRate = 1.0 / 60.0;
tUpdate = [NSTimer scheduledTimerWithTimeInterval:tiCallRate
                                           target:self
                                         selector:@selector(storeTouches:)
                                         userInfo:nil
                                          repeats:YES];

Затем сохраните свой собственный отчет о текущих точках касания, которые вы получили. Конечно, если не было события touchesEnded и события touchesMoved, вы будете знать, что пользователь все еще касается в том же месте, что и в прошлый раз.

0 голосов
/ 28 января 2011

Для записи касания со скоростью 60 кадров в секунду (что может быть максимумом, допустимым текущим драйвером сенсора iOS), старайтесь делать как можно меньше в цикле выполнения пользовательского интерфейса, поскольку это может блокировать события касания.Проверяйте отметку времени при каждом событии касания.Если у вас достаточно быстрый цикл цикла выполнения пользовательского интерфейса, и между перемещениями касания намного больше, чем пропускается время кадра, вполне вероятно, что за прошедшее время не было никакого движения касания, поэтому просто заполните пропущенные данные (предыдущий x,точка y) перед текущим обновлением касания.

По-видимому, метки времени перекодированы до аппаратной частоты кадров 60 кадров в секунду, поэтому не ожидайте большей точности, чем эта.

0 голосов
/ 28 января 2011

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

Кроме того, я столкнулся с той же проблемой некоторое время назад. UIResponder Задержки

...