Ответ 1
UITapGestureRecognizer
является дискретным распознавателем жестов и, следовательно, никогда не переходит в начальные или измененные состояния. Из справочника класса UIGestureRecognizer:
Переход дискретных жестов из Возможного для распознанного (UIGestureRecognizerStateRecognized) или Failed (UIGestureRecognizerStateFailed), в зависимости от того, являются ли они успешно интерпретировать жест или нет. Если распознаватель жестов переходы к распознанному, он отправляет сообщение своего действия своей цели.
(Помните, конечно, что UIGestureRecognizerStateRecognized
== UIGestureRecognizerStateEnded
).
В документах говорится, что вы должны проверить состояние распознавателя жестов, чтобы убедиться, что оно находится в его законченном состоянии, прежде чем вы запустите свой код, чтобы сказать, что он был распознан. Они не говорят, что жест нажатия на самом деле переходит к начальным или измененным состояниям (хотя я признаю, что документы немного вводят в заблуждение на используемом языке!).
Если вы хотите проверить событие finger down для распознавателя жестов, я бы порекомендовал просто использовать touchesBegan:withEvent:
, так как это то, что вы действительно в любом случае.