Как запретить клавиатуру нажимать веб-просмотр в приложении iOS с помощью телефонной затычки

Когда поле ввода в нижней части экрана имеет фокус, клавиатура подталкивает мой веб-просмотр, а верхняя часть страницы больше не видна.

Я хочу, чтобы клавиатура не нажала веб-просмотр.

У кого-нибудь есть идея?

Ответ 1

В фокусе установите window.scrollTo(0,0);. Это предотвратит полностью нажатие на веб-просмотр клавиатуры

$('input').on('focus', function(e) {
    e.preventDefault(); e.stopPropagation();
    window.scrollTo(0,0); //the second 0 marks the Y scroll pos. Setting this to i.e. 100 will push the screen up by 100px. 
});

Если вы не хотите устанавливать статическое значение для своей позиции прокрутки Y, не стесняйтесь использовать этот короткий плагин, который я написал, что автоматически выравнивает клавиатуру под полем ввода. Это не идеально, но он выполняет свою работу. Просто назовите это на фокусе, как показано выше:

setKeyboardPos(e.target.id);

Ответ 2

Решил эту проблему, используя driftyco/ionic-plugins-keyboard (https://github.com/driftyco/ionic-plugins-keyboard)

Сначала установите плагин для клавиатуры:

cordova plugin add com.ionic.keyboard

Теперь вы можете I) отключить прокрутку собственной клавиатуры:

cordova.plugins.Keyboard.disableScroll(true);

или II) слушать native.keyboardshow событие в deviceready и прокручивать назад, когда на клавиатуре отображается:

window.addEventListener('native.keyboardshow', keyboardShowHandler);

function keyboardShowHandler(e){
    setTimeout(function() {
        $('html, body').animate({ scrollTop: 0 }, 1000);
    }, 0);
}

Я использовал подход II), потому что мне понравилась анимированная прокрутка в моем случае. Если вы не хотите идти с анимацией, замените соответствующую строку на window.scrollTo(0, 0);. Но я боюсь, что в этом случае вам снова придется иметь дело с этой "анимацией дрожания мусора", о которой писал Imskull.

Ответ 3

убедитесь в этом в файле config.xml

<preference name="KeyboardShrinksView" value="true" />

Ответ 4

У меня была такая же проблема, и ни одно из вышеперечисленных решений не помогло мне но я нашел простой способ пройти мимо него.

В папке platform/android откройте файл manifest.xml и в основном теге активности замените атрибут android: windowSoftInputMode = "adjustResize" с помощью android: windowSoftInputMode = "adjustPan"

теперь клавиатура будет накладывать ваше содержимое.

Я надеюсь, что это поможет кому-то.

Ответ 5

Я буквально отправил более 100 ответов, прежде чем сам должен был найти ответ. так вот как отключить прокрутку пользовательского интерфейса на IOS. просто, когда Cordova загружается, добавьте это. Пожалуйста, установите:

cordova plugin add ionic-plugin-keyboard --save

а затем cordova prepare для загрузки этого нового плагина в вашу папку www.

document.addEventListener('deviceready', function(e){
    window.addEventListener('native.keyboardshow', function () {
            cordova.plugins.Keyboard.disableScroll(true);
        });
});

И это оно. Пожалуйста, дайте мне знать, если это было полезно. Я буду рад ответить больше.

Ответ 6

Добавление этой опции в config.xml мне.

<preference name="KeyboardShrinksView" value="true" />

Он был удален в Cordova 3.2.0, но доступен в cordova-plugin-keyboard.

Вам нужно установить этот плагин, и эта опция будет работать снова

cordova plugin add cordova-plugin-keyboard