Я работаю над приложением, в котором большинство сенсорных жестов будут жестами панорамирования (но я не использую распознаватель жестов панорамирования). Я использую UIGestureRecognizerDelegate
и использую touchesBegan
, touchesMoved
, touchesEnded
и touchesCancelled
. Однако на экране есть несколько мест, где, если там начинается панорамирование, я хочу вместо этого распознать это как событие касания. Я могу сделать это, просто распознав местоположение в touchesBegan. Мой вопрос: могу ли я отменить касание в этот момент, чтобы предотвратить продолжение панорамирования? Если панорамирование начинается с этого места на экране, это гарантирует, что пользователь на самом деле не предназначен для панорамирования. Я надеюсь в этом есть смысл.
РЕДАКТИРОВАТЬ: я понял, что дополнительные накладные расходы на управление краном даже для точки, которую следует игнорировать, несущественны, поэтому я думаю, что просто сделаю это. Однако я оставлю вопрос здесь на случай, если есть способ остановить отслеживание жеста.
Мне также нужно предложение о том, как справиться со следующей ситуацией.
Предположим, пользователь запускает панорамирование (не в только что описанной области, а в другом месте, где оно действительно должно быть панорамированием), и пока оно продолжается, в другом месте экрана запускается другое панорамирование. Как мне распознать эту ситуацию?
РЕДАКТИРОВАТЬ: сейчас я проверяю, решит ли этот код эту проблему:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
Редактировать: ARC запрещает явное расщепление, поэтому теперь я пересматриваю свой вопрос на более общий вопрос о том, что, если что, я могу сделать, чтобы подавить дальнейшие действия. Или мне просто нужно с этим смириться?