Мы получаем события touchstart, touchmove и touchend для нескольких взаимодействий с пользователем, затем после Touchend мы больше не получаем никаких событий touchstart в течение нескольких секунд. Прямое взаимодействие с Safari (например, прокрутка вкладок и т. д.) обычно приводит к тому, что при следующем касании страница снова заработает. Это проблема очень низкого уровня, когда функции-обработчики просто не запускаются браузером. Это происходит после некоторого случайного количества сенсорных взаимодействий — иногда после одного или двух, в других случаях для запуска могут потребоваться десятки.
Интересно, что когда события касания происходят на холсте в областях, которые нас не волнуют, и поэтому мы не рисуем в ответ, проблема не проявляется, и они всегда срабатывают. Если мы рисуем в ответ (косвенно - см. ниже), то после некоторого случайного количества взаимодействий touchstart и touchend он прекращается.
Мы можем визуализировать либо WebGL, либо непосредственно на холст, и независимо от того, какой метод мы используем, проблема проявляется.
Весь рендеринг отделен от реальных событий касания - мы делаем все рисование через requestAnimFrame и рисуем только «грязные» или измененные области Canvas.
Кто-нибудь еще испытывает подобную проблему, когда сенсорные события перестают работать после нескольких взаимодействий с версией 17.4.1?
На данный момент это проявляется на:
- iPad 6-го поколения
- iPad 9-го поколения
- iPad Pro 4-го поколения (M2)
- iPhone 13 Pro
Подробнее здесь: https://stackoverflow.com/questions/783 ... ith-17-4-1
Мобильная версия