VKUI icon indicating copy to clipboard operation
VKUI copied to clipboard

[Bug] Не работает Touch на windows

Open gou177 opened this issue 4 years ago • 3 comments

Описание При взаимодействии с Touch с помощь тачскрина/пера он не реагирует на это

Версия библиотеки v4.23.0

Шаги воспроизведения

  1. Идём на https://vkcom.github.io/VKUI/#/Touch
  2. Пытаемся сдвинуть круг с помошью пера/тачскрина.

Ожидаемое поведение Круг двигается

Пример с воспроизведением https://vkcom.github.io/VKUI/#/Touch

gou177 avatar Dec 09 '21 04:12 gou177

Альт шаги воспроизведения

  1. Ставим spacedesk server на комп, spacedesk client на телефон (https://www.spacedesk.net/#download)
  2. В устройствах ввода spacedesk client; сенсорный экран нужно поставить тип сенсорного ввода абсолютное касание
  3. Подключаем телефон через spacedesk к компу
  4. Идём на https://vkcom.github.io/VKUI/#/Touch
  5. Пытаемся сдвинуть круг с на телефоне

Версии Chrome 96.0.4664.93 Windows 11 22000.318 Android 10 Spacedesk client v0.9.86 Spacedesk server v1.0.17

gou177 avatar Dec 14 '21 06:12 gou177

Подозреваю, что это проблемы на устройствах с мульти-инпутом (мышка + тач) — в Touch всегда используется только один способ ввода. Самое простое воспроизведение: открыть vkui-приложение (или доку) в хроме и потом включить эмуляцию тача — жесты перестанут работать.

Чинится через:

  • PointerEvents, но это брейкинг, потому что preventDefault на touchMove и на pointerMove — совсем разные вещи.
  • Двойную провязку на TouchEvents + MouseEvents, но тогда все события (start / move / end) будут вылетать по два раза.
  • Динамическую подвязку на touchMove/End или mouseMove/Up в зависимости от touchStart / mouseDown, но нужно быть осторожным тк на тачах все равно вылетает mouse-событие для совместимости.

FYI тому кто этим займется: getting touchy

thoughtspile avatar Dec 14 '21 09:12 thoughtspile

На текущий момент переход на Pointer events блочит 13 сафари

SevereCloud avatar Oct 24 '23 10:10 SevereCloud

Нужно учитывать при onpointerdown, что он также работает при нажатии на среднюю кнопку мыши и кнопку вызова контекстного меню.

  • event.button === 0 – основное нажатие
  • event.button === 1 – нажатие на среднюю кнопку
  • event.button === 2 или event.button === 0 && event.ctrlKey === true – вызов контекстного меню

Также смотри:

inomdzhon avatar Sep 08 '25 11:09 inomdzhon

@gou177 Привет! Можешь, пожалуйста, проверить воспроизводится ли проблема в v7.6.3?

@thoughtspile предлагал "Двойную провязку на TouchEvents + MouseEvents, но тогда все события (start / move / end) будут вылетать по два раза." – сделали так в #8883

inomdzhon avatar Sep 19 '25 09:09 inomdzhon

Задача закрыта из-за отсутствия активности в течение последних 14 дней. Если это произошло по ошибке или проблема все ещё актуальна, откройте задачу повторно.

vkcom-publisher avatar Oct 03 '25 10:10 vkcom-publisher