touchesMoved (): это единственный API отслеживания пальцев? и это точно? - PullRequest
0 голосов
/ 22 июня 2011

Я пишу приложение для iPad, которому нужно очень точно рассчитывать время движения пальца, поэтому я стремлюсь добиться максимальной производительности и точности.У меня есть два вопроса по этому поводу:

  1. Для перехвата положения пальца на экране, я должен использовать touchesMoved (), или есть API более низкого уровня?

  2. Кто-нибудь знает, возвращает ли touchesMoved () точное положение на экране, или iPad выполняет некоторую интерполяцию?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

У вас есть 3 способа перехвата позиций пальцев: a) Методы делегирования UIResponder:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

b) Методы UIGestureRecognizer

в) Вы также можете переопределить - (void) событие sendEvent: (UIEvent *); в UIApplicationDelegate или UIWindow для перехвата UIEvents - но этот метод не рекомендуется.

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

И последнее: минимальная рекомендуемая площадь касания составляет 44x44. Если вы коснетесь области, которая будет меньше, пользователи будут чувствовать себя некомфортно, работая с вашим программным обеспечением.

0 голосов
/ 22 июня 2011

Касания не очень точные, потому что пальцы не очень точные ( намного меньше, чем курсор мыши), и потому что оборудование для отслеживания не очень точное (потому что это не нужно из-за размера пальца - он не работает без значительной области касания).

При этом iDevices имеет очень хорошие сенсорные экраны по сравнению со многими другими емкостными сенсорными устройствами. Я просто не уверен, что точность пикселей достижима на практике.

Впрочем, с этим легко поэкспериментировать.

...