iOS 7输入元素移动固定定位元素

时间:2013-09-24 00:04:37

标签: ios input uiwebview ios7 virtual-keyboard

我正在尝试重新编译适用于iOS 7的应用程序,因为到目前为止还没有任何旧的应用程序。 许多问题之一是我在UIWebViews中使用了一些输入。文字输入,拣货员等。

现在,当iOS 7闪亮的白色键盘出现时,网页中的所有底部固定元素(例如,确认按钮)都向上滚动,就好像虚拟键盘的“顶部”是我的UIWebView的新底部。这是与iOS6.x完全不同的行为

是否有任何魔术技巧可以使虚拟键盘行为像以前一样工作,而无需将JS / CSS注入webView?

4 个答案:

答案 0 :(得分:44)

这解决了我的cordova应用程序的问题。我不确定它是否适用于你,但以防万一。

检查你的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" />

答案 1 :(得分:8)

在我们的案例中,一旦用户滚动,这将自行修复。因此,这是我们用来模拟任何blurinput上的textarea滚动的修补程序:

$(document).on('blur', 'input, textarea', function () {
    setTimeout(function () {
        window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
    }, 0);
});

答案 2 :(得分:6)

我遇到了完全相同的问题&amp;经过两天的实验后放弃了。看起来: a)所有底部固定元件向上,使其底部偏移相对于键盘的顶部边缘 c)所有顶部固定元素保持原始位置(不要像过去那样向上移动) - 注意顶部绝对元素工作正常。

我找到的唯一解决方案是使用自定义iPad样式表替换所有使用绝对元素的固定元素,将css bottom属性设置为auto并使用top而不是

答案 3 :(得分:-1)

对不起,您的解决方案对我有用,但只有当比例设置为1.0时才有效。如果我将其设置为0.9,那么它就像是在你建议的修复之前。我将初始刻度,最大刻度和最小刻度设置为0.9,当键盘出现时固定对象的弹跳效果仍在发生。