Сбой распознавателя прищемления
Я пытаюсь обнаружить прикосновения в UIPinchGestureRecognizer
Это метод, потому что мне нужен горизонтальный и вертикальный масштаб. В крайнем случае, изображение должно быть соответственно изменено. Например, если пользователь перемещает пальцы только горизонтально, я изменяю только ширину вида.
Он работает нормально, но когда я убираю палец с экрана, в большинстве случаев приложение вылетает с SIGABRT и без сообщения.
Мой код:
if (recognizer.state == UIGestureRecognizerStateBegan) {
previousHorizontalPinchDistance = ABS([recognizer locationOfTouch:1 inView:recognizer.view].x - [recognizer locationOfTouch:0 inView:recognizer.view].x);
previousVerticalPinchDistance = ABS([recognizer locationOfTouch:1 inView:recognizer.view].y - [recognizer locationOfTouch:0 inView:recognizer.view].y);
}
CGFloat horizontalPinchDistance = ABS([recognizer locationOfTouch:1 inView:recognizer.view].x - [recognizer locationOfTouch:0 inView:recognizer.view].x);
CGFloat verticalPinchDistance = ABS([recognizer locationOfTouch:1 inView:recognizer.view].y - [recognizer locationOfTouch:0 inView:recognizer.view].y);
Авария на линии, где я установил horizontalPinchDistance
, Есть идеи почему? Спасибо!
1 ответ
А пока я нашел причину крушения.
Когда пользователь поднимает палец, метод распознавателя Pinch по-прежнему вызывается (или если пользователь не поднимает оба пальца одновременно). Проблема в том, что numberOfTouches
становится 1 вместо 2. Таким образом, индекс 1 в вызове метода [recognizer locationOfTouch:1 inView:recognizer.view]
будет вне границ. Таким образом, блок кода в моем вопросе должен быть выполнен только если recognizer.numberOfTouches > 1
,