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 наконец исправили это.

  • Проблема CB-4862: https://issues.apache.org/jira/browse/CB-4862 (Это основной поток вопросов. Первоначально он был закрыт, но после комментария, который я сделал недавно, он был вновь открыт)

  • Проблема CB-5852: https://issues.apache.org/jira/browse/CB-5852 (Вот где людям CB-4862 сказали, что возможное исправление может существовать, но первоначальные тесты разработчиками показывают, что это не совсем решение, к сожалению).

Надеемся, что эти ссылки, по крайней мере, помогут вам получить самую свежую информацию о проблемах, связанных с сокращением клавиатуры. Если у кого-то еще есть ссылки/ссылки, пожалуйста, поделитесь!

Ответ 2

Я исправил это, вызвав этот код при каждом изменении страницы -:

    $('input').unbind('focusout');
    $(document).on('focusout', 'input', function() {
        setTimeout(function() {
            window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
        }, 500);
    });