Я работаю над адаптивным веб-приложением для любителей, но у меня возникли проблемы с фокусом ввода на iOS. Я бы хотел, чтобы ввод прокручивался чуть выше клавиатуры iOS при фокусе (или не прокручивался), но iOS хочет центрировать этот элемент управления, несмотря ни на что.
В прикрепленном GIF-файле вы можете увидеть поведение, которое я вижу, а затем я прокручиваю в конце, чтобы указать, что я хочу, чтобы произошло, как только сработает событие фокуса.

Одна вещь, которую я обнаружил, работает, но мне хотелось бы чего-то лучшего: следующий код работает, но имеет заметную задержку между прокруткой, которую вы видите в GIF, и возвращением окна в желаемое положение. Кроме того, если я настрою время setTimeout() ниже ~400, это не сработает. Есть ли в iOS какой-либо блок во время прокрутки фокуса?
Код: Выделить всё
element.addEventListener('focus', (e) => { setTimeout(() => { window.scroll(0,0) }, 500) });
Обновление № 1
На данный момент единственным сработавшим решением, которое я пробовал, является следующее, которое кажется довольно неудобным (где прокрутка определена в другом месте в прослушивателях фокуса и размытия):
Код: Выделить всё
document.addEventListener('scroll', (e) => {
if (scrollLock && document.documentElement.scrollTop > 100) {
document.documentElement.scrollTop = 100;
}
});
Подробнее здесь: https://stackoverflow.com/questions/607 ... nput-focus
Мобильная версия