diff --git a/src/views/SwipeView.vue b/src/views/SwipeView.vue index 6438beb..c780e3f 100644 --- a/src/views/SwipeView.vue +++ b/src/views/SwipeView.vue @@ -52,7 +52,6 @@ @touchstart="index === 0 ? startTouch($event) : null" @touchmove="index === 0 ? moveTouch($event) : null" @touchend="index === 0 ? endTouch($event) : null" - @mousedown="index === 0 ? startDrag($event) : null" >
@@ -291,17 +290,20 @@ const prevPhoto = (userId) => { // Обработчики touch событий const startTouch = (event) => { - isPanning.value = true; - touchStartX.value = event.touches[0].clientX; - touchStartY.value = event.touches[0].clientY; + // Проверяем, что это действительно touch-событие, а не эмуляция мыши + if (event.touches && event.touches.length === 1) { + isPanning.value = true; + touchStartX.value = event.touches[0].clientX; + touchStartY.value = event.touches[0].clientY; - // Сбросить конечные точки - touchEndX.value = 0; - touchEndY.value = 0; + // Сбросить конечные точки + touchEndX.value = 0; + touchEndY.value = 0; + } }; const moveTouch = (event) => { - if (!isPanning.value || !touchStartX.value) return; + if (!isPanning.value || !touchStartX.value || !event.touches || event.touches.length !== 1) return; const currentX = event.touches[0].clientX; const currentY = event.touches[0].clientY; @@ -313,8 +315,8 @@ const moveTouch = (event) => { const diffX = currentX - touchStartX.value; const diffY = currentY - touchStartY.value; - // Определяем направление свайпа для индикаторов - if (Math.abs(diffX) > Math.abs(diffY)) { + // Определяем направление свайпа для индикаторов только при значительном движении + if (Math.abs(diffX) > 10 && Math.abs(diffX) > Math.abs(diffY)) { if (diffX > 20) { swipeDirection.value = 'right'; } else if (diffX < -20) { @@ -341,6 +343,21 @@ const endTouch = (event) => { if (!isPanning.value) return; isPanning.value = false; + // Проверяем, что у нас есть валидные координаты + if (!touchEndX.value || !touchStartX.value) { + // Если координаты отсутствуют, просто сбрасываем состояние + cardStyle.value = { + transform: 'none', + transition: 'transform 0.3s ease' + }; + swipeDirection.value = null; + touchStartX.value = 0; + touchStartY.value = 0; + touchEndX.value = 0; + touchEndY.value = 0; + return; + } + const diffX = touchEndX.value - touchStartX.value; // Проверяем, достаточно ли было смещение для действия