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;
// Проверяем, достаточно ли было смещение для действия