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