Когда поле ввода в нижней части экрана имеет фокус, клавиатура подталкивает мой веб-просмотр, а верхняя часть страницы больше не видна.
Я хочу, чтобы клавиатура не нажала веб-просмотр.
У кого-нибудь есть идея?
Когда поле ввода в нижней части экрана имеет фокус, клавиатура подталкивает мой веб-просмотр, а верхняя часть страницы больше не видна.
Я хочу, чтобы клавиатура не нажала веб-просмотр.
У кого-нибудь есть идея?
В фокусе установите 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);
Решил эту проблему, используя 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.
убедитесь в этом в файле config.xml
<preference name="KeyboardShrinksView" value="true" />
У меня была такая же проблема, и ни одно из вышеперечисленных решений не помогло мне но я нашел простой способ пройти мимо него.
В папке platform/android откройте файл manifest.xml и в основном теге активности замените атрибут android: windowSoftInputMode = "adjustResize" с помощью android: windowSoftInputMode = "adjustPan"
теперь клавиатура будет накладывать ваше содержимое.
Я надеюсь, что это поможет кому-то.
Я буквально отправил более 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);
});
});
И это оно. Пожалуйста, дайте мне знать, если это было полезно. Я буду рад ответить больше.
Добавление этой опции в config.xml
мне.
<preference name="KeyboardShrinksView" value="true" />
Он был удален в Cordova 3.2.0, но доступен в cordova-plugin-keyboard.
Вам нужно установить этот плагин, и эта опция будет работать снова
cordova plugin add cordova-plugin-keyboard