Phonegap KeyboardShrinksПримечание и фиксированное положение на iOS не применяются правильно
Я использую версию Phonegap версии 2.9.0, и я хочу, чтобы при появлении клавиатуры мой WebView сжимался, как в Android-приложениях Android. У меня есть элементы нижнего колонтитула и заголовка в фиксированном положении, а когда клавиатура открыта, это вызывает проблемы (нижний колонтитул и заголовок теряют состояние фиксированной позиции).
Я думаю, что настройки KeyboardShrinksView могут исправить это, согласно документации на телефонную книгу: http://docs.phonegap.com/en/2.9.0rc1/guide_project-settings_ios_index.md.html#Project%20Settings%20for%20iOS
Но с большим количеством попыток я не могу заставить его работать, WebView не сжимается.
Я думал, может быть, это может произойти из конфликта между другими настройками, установленными на моем config.xml:
config.xml
<gap:platform name="ios" />
<gap:platform name="android" />
<preference name="fullscreen" value="false" />
<preference name="webviewbounce" value="false" />
<preference name="orientation" value="portrait" />
<preference name="KeyboardShrinksView" value="true" />
Или, может быть, это может произойти из определения метатега, особенно для видового экрана:
index.html
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
Вы знаете, почему он не работает? Или у вас есть обходной путь для этого?
EDIT: я видел, что это меняет что-то, когда KeyboardShrinksView = true, но когда клавиатура открыта, она сокращает нижнюю часть моего контента (включая нижний колонтитул и поле) вместо изменения размера всего моего содержимого. Я ожидаю, что он поместит мой нижний колонтитул в самую верхнюю часть клавиатуры, я прав?
Спасибо за помощь
Ответы
Ответ 1
Да, это боль, с которой приходится иметь дело прямо сейчас. В настоящее время нет реального решения, чтобы сделать вещи, как они были в iOS. Лично я в настоящее время манипулирую двумя разными тегами в своих приложениях (один для iOS и один для Android), и это приближается к старому поведению в iOS. Вот что я использую:
<!-- IOS --> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />'
<!-- ANDROID --> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=1" />
Мои настройки config.xml - это то, что вы ожидаете:
<preference name="HideKeyboardFormAccessoryBar" value="true" />
<preference name="KeyboardShrinksView" value="false" />
Вот несколько ссылок, за которыми нужно следить и следить за ошибками (т.е. Запрашивать), чтобы ребята из Cordova наконец исправили это.
Надеемся, что эти ссылки, по крайней мере, помогут вам получить самую свежую информацию о проблемах, связанных с сокращением клавиатуры. Если у кого-то еще есть ссылки/ссылки, пожалуйста, поделитесь!
Ответ 2
Я исправил это, вызвав этот код при каждом изменении страницы -:
$('input').unbind('focusout');
$(document).on('focusout', 'input', function() {
setTimeout(function() {
window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
}, 500);
});