Я думаю, что ниже if (canMove) {
вы должны накапливать движения. Позвольте мне объяснить, вы должны вычислить абсолютную дельтаX движения следующим образом:
deltaX = currentPosition.x - gestureStartPoint.x;
где deltaX - переменная класса. Когда это значение превышает пороговое значение, вы будете выполнять движение на один блок. Регулируя этот порог, вы можете изменить чувствительность.
Конечно, вы также должны учитывать компонент Y.