Чтобы клавиатура отображалась на устройствах iOS, вам необходимо сосредоточиться на редактируемом элементе, таком как input
или textarea
.Кроме того, элемент должен быть видимым , а функция .focus()
должна выполняться в ответ на взаимодействие с пользователем, такое как щелчок мыши.
Дело в том, что мы НЕ ХОТИМэлемент ввода должен быть видимым ... Я немного поиграл с этим и в итоге получил искомый результат.
Сначала создайте элемент, который вы хотите использовать для отображения клавиатуры - в данном случаекнопка и скрытый элемент ввода: ( Рабочий jsFiddle или Тест на мобильном устройстве )
<button id="openKeyboard">Open Keyboard</button>
<input id="hiddenInput" style="visibility: hidden;">
Затем используйте следующий код JavaScript:
document.getElementById('openKeyboard').addEventListener('click', function(){
var inputElement = document.getElementById('hiddenInput');
inputElement.style.visibility = 'visible'; // unhide the input
inputElement.focus(); // focus on it so keyboard pops
inputElement.style.visibility = 'hidden'; // hide it again
});
Примечания:
- Я заметил, что iOS-сафари автоматически прокручивает и масштабирует область ввода, поэтому убедитесь, что вы используете viewport и расположите свой вводэлемент в соответствующем месте.
- Вы можете использовать CSS для ввода, например, установить
opacity
, height
и width
на 0
.Однако, если ваш ввод полностью скрыт, это не сработает снова, поэтому убедитесь, что вы оставили padding
или border
просто для того, чтобы что-то отображалось (даже если оно не будет отображаться из-за непрозрачности).Это также означает, что вы не должны использовать display:none
, чтобы скрыть это, скрытые элементы просто не могут быть сфокусированы. - Используйте обычные события клавиатуры (
keydown
, keypress
, keyup
) наваш скрытый ввод для доступа к взаимодействию пользователя, как вы это обычно делаете.Здесь ничего особенного.