我正在尝试为 iOS 7 重新编译一个应用程序,因为到目前为止旧的应用程序都没有工作。许多问题之一是我在 UIWebViews 中使用了一些输入。文本输入、选择器等。
现在,当 iOS 7 闪亮的白色键盘出现时,网页中的所有底部固定元素(例如,确认按钮)都向上滚动,就好像虚拟键盘的“顶部”是我的 UIWebView 的新底部。这是与 iOS6.x 大不相同的行为
是否有任何魔术技巧可以使虚拟键盘行为像以前一样工作,而无需将 JS/CSS 注入 webView?
我正在尝试为 iOS 7 重新编译一个应用程序,因为到目前为止旧的应用程序都没有工作。许多问题之一是我在 UIWebViews 中使用了一些输入。文本输入、选择器等。
现在,当 iOS 7 闪亮的白色键盘出现时,网页中的所有底部固定元素(例如,确认按钮)都向上滚动,就好像虚拟键盘的“顶部”是我的 UIWebView 的新底部。这是与 iOS6.x 大不相同的行为
是否有任何魔术技巧可以使虚拟键盘行为像以前一样工作,而无需将 JS/CSS 注入 webView?
这解决了我的科尔多瓦应用程序的问题。我不确定它是否适用于你,但以防万一。
检查您的 html 元标记是否有类似的内容:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
用这个替换它:
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" />
在我们的例子中,一旦用户滚动,它就会自行修复。所以这是我们一直用来模拟blur
在 any input
or上滚动的修复textarea
:
$(document).on('blur', 'input, textarea', function () {
setTimeout(function () {
window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
}, 0);
});
经过两天的实验,我遇到了完全相同的问题并放弃了。似乎:a)所有底部固定的元素都向上移动,以便它们的底部偏移相对于键盘的顶部边缘 c)所有顶部固定的元素都保持在其原始位置(不要像以前那样向上移动)-请注意,顶级绝对元素可以正常工作。
我发现的唯一解决方案是使用自定义 iPad 样式表,将所有固定元素替换为绝对元素,将 CSS 底部属性设置为自动并使用顶部代替
Opposum,您的解决方案对我有用,但仅在比例设置为 1.0 时才有效。如果我将其设置为 0.9,那么它就像在您建议的修复之前一样。我将 initial-scale、maximum-scale 和 minimum-scale 设置为 0.9,键盘出现时固定物体的弹跳效果仍在发生。