Сбой распознавателя прищемления

Я пытаюсь обнаружить прикосновения в 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,

Другие вопросы по тегам