Phonegap KeyboardShrinksView和固定在iOS上的位置没有正确应用

我使用Phonegap的2.9.0版本,我希望当键盘出现时,我的WebView就像在Android手机应用程序中一样缩小。 我有页脚和标题元素在固定的位置,当键盘打开时会造成麻烦(页脚和页眉松动其固定的位置状态)。

我认为KeyboardShrinksView设置可以解决这个问题,根据phonegap文档: 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" /> 

你知道为什么它不工作? 或者你有解决这个问题的方法吗?

编辑:我已经看到,它改变了一些KeyboardShrinksView = true时,但当键盘打开,它隐藏我的内容的底部(包括我的页脚和字段),而不是调整我的整个内容。 我期待它将脚注放在键盘的顶部,对吗?

感谢您的帮助

是的 – 这是一个现在处理的痛苦。 目前还没有真正的解决办法,让它们像以前一样在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(这是核心问题线程,最初是closures的,但是在我刚刚发表的评论之后重新开放)

  • 问题CB-5852: https ://issues.apache.org/jira/browse/CB-5852(这是CB-4862人们被告知可能存在的修复可能存在 – 但开发人员最初的testing显示,这不是一个真正的解决scheme悲哀)。

希望这些链接至less可以帮助你获得最新的有关keyboardshrink相关问题的最新信息。 如果其他人有铅/链接在这个请分享!

我通过在每次更改页面时调用此代码来修复它:

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