Этот ответ взломан;но это лучшее решение, которое я придумала.
Добавление отступа к нижней части страницы, достаточно большого для клавиатуры, позволяет отображать содержимое по желанию, когда клавиатура видна.
Используя некоторые слушатели javascript и класс CSS, этот отступ можно добавлять только при отображении клавиатуры.
body.keyboard {
height: calc(100% + 500px); /* add padding for keyboard */
}
Следующий javascript будет добавлять и удалять класс CSS, когда ввод имеет фокус, которыйближе всего я смогу выяснить, когда отображается клавиатура.
// focus events don't bubble, must use capture phase
document.body.addEventListener("focus", event => {
const target = event.target;
switch (target.tagName) {
case "INPUT":
case "TEXTAREA":
case "SELECT":
document.body.classList.add("keyboard");
}
}, true);
document.body.addEventListener("blur", () => {
document.body.classList.remove("keyboard");
}, true);
Стоит также отметить, что iOS выполняет раздражающее масштабирование, если размер входного шрифта меньше 16px, поэтому это также важно.
input {
font-size: 16px !important;
}
Пожалуйста, дайте мне знать, если у вас есть лучшее решение.