2011-09-14 5 views
0

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

ОС имеет три функции обратного вызова (1) обнаруживает, когда экран коснулся, (2) обнаруживает, когда палец перетаскивается на экран и (3) обнаруживает, когда палец покидает экран. В каждом случае функция обратного вызова получает координаты экрана, где произошло соответствующее событие.

Проблема в том, что перетаскивание, очевидно, начинается пальцем, касающимся экрана и заканчивается, когда палец покидает экран. Нажатие обычно определяется как касание, очень короткое перетаскивание и конечное касание. Если я просто назову свою указанную функцию нажатием, я буду запускать события перетаскивания экрана, а не оригинальные краны.

Лучшее, что я могу придумать, это отметить время или место, когда пользователь впервые касается. Если мы находимся в функции обратного вызова перетаскивания на короткое время или расстояние позже, рассматриваем его как свиток. В противном случае, если есть обратный вызов с разрешением на просмотр, относитесь к нему как кран. Проблемы включают в себя затраты времени, определяющие, сколько времени или расстояния использовать в качестве триггера, и если есть более общий общий подход.

Мое приложение находится в python для устройства для symbian. Поскольку это не очень популярная платформа, любые предложения по наилучшему способу реализации будут оценены по достоинству.

ответ

0

Лучший подход, который я могу думать:

касания обратного вызова: набор action_location = drag_location = CURRENT_LOCATION (CURRENT_LOCATION сообщает зева)

Un касание обратного вызова: если action_location в distance_threshold (например, 20 или 25 пиксели) CURRENT_LOCATION, выполнять действия

Drag обратного вызова: если drag_location больше, чем distance_threshold от CURRENT_LOCATION, прокрутки и установить drag_location = CURRENT_LOCATION

Смежные вопросы