touchesMoved(): это единственный API отслеживания пальцев? и это точно?

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

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

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

Спасибо!

2 ответа

У вас есть 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;

б) методы UIGestureRecognizer

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

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

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

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

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

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

Другие вопросы по тегам