IOS Safari: запретить (или контролировать) прокрутку при фокусе вводаIOS

Программируем под IOS
Ответить
Anonymous
 IOS Safari: запретить (или контролировать) прокрутку при фокусе ввода

Сообщение Anonymous »

По этому поводу есть много старых вопросов (но не совсем), но, поскольку я не смог найти ничего современного, я решил задать их еще раз в надежде получить современный ответ.

Я работаю над адаптивным веб-приложением для любителей, но у меня возникли проблемы с фокусом ввода на 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;
}
});
Все решения, включающие вызовы continueDefault() или window.scroll, не предотвращают прокрутку, изображенную выше, но активно отслеживают прокрутку и заставляют ее вернуться туда, куда я хочу, это работает. Однако хотелось бы, чтобы это не был ответ!

Подробнее здесь: https://stackoverflow.com/questions/607 ... nput-focus
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»