Можно ли тянуть за точки касания сразу после касания Beg: вызывается? - PullRequest
7 голосов
/ 06 августа 2009

Вероятно, вы знаете, что iPhone OS делает искусственную задержку около 0,25 секунды после касания Beg: происходит. Это делается для того, чтобы проверить, собирается ли пользователь двигаться или нет. Если в течение этого времени дельты перемещаются достаточно значительно, начинается последовательность touchesMoved:

Но если вы хотите реализовать тактильное сенсорное поведение в своем приложении, вам может не потребоваться задержка. Это выглядит так некрасиво! Вы начинаете что-то двигать, и за 0,3 секунды ничего не происходит. Затем BANG и все это начинает двигаться с большим переворотом. Это происходит каждый раз, когда начинается новая последовательность касаний с движением. Это серьезно отстой. Конечно, в некоторых ситуациях это необходимо, потому что вы можете определить, действительно ли пользователь намеревался двигаться. но не так для ползунка пользовательской сборки или другого вида тактильного управления, которое отслеживает движения касания.

Итак, после того, как я выяснил, что это преднамеренно происходит на iPhone OS, я хотел бы знать, как решить эту проблему. Я не могу предсказать движение, потому что пользователь может двигаться влево или вправо. Я не знаю этого в штрихах. 0,3 секунды достаточно, чтобы приложение выглядело не отвечающим.

Однако, похоже, есть надежда: у Convertbot нет абсолютно никаких проблем с этим. Колесо вращается сразу после касания и перемещения. Нет задержки, нет задержки. Я спросил в их блоге, как они это сделали, но ответа пока нет.

Я надеюсь, что есть способ вытащить вручную сенсорные координаты из системы. При касании Beg: запускается интервал, который тянет с частотой 60 Гц до тех пор, пока касание не переместится: действие не будет.

Итак, самый большой вопрос на этой планете: «Как это возможно?»

Ответы [ 2 ]

4 голосов
/ 11 января 2010

Если ваши респонденты находятся в UIScrollView, убедитесь, что для параметра scrollView delaysContentTouches установлено значение NO. Это будет работать как для touchesBegan: метод UIResponder, так и для beginTrackingWithTouch: метод UIControl.

0 голосов
/ 12 января 2010

Если ваш подкласс UIView является подвидом UITableView или одного из его потомков, таких как UITableView, вам нужно delaysContentTouches НЕТ в представлении прокрутки или в табличном представлении. Таким образом, он сразу же отправит первое прикосновение к вашему touchesBegain:.

Однако я думаю, что ConvertBot вообще не использует UIScrollView: это, вероятно, пользовательский UIView, который реализует саму вращающуюся часть. Если ваш пользовательский интерфейс не требует прокрутки, просто поместите свой подкласс UIView в представление содержимого, и вам не нужно устанавливать delaysContentTouches, поскольку отсутствует представление прокрутки для перехвата сенсорных событий.

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