20

我正在尝试为 iOS 7 重新编译一个应用程序,因为到目前为止旧的应用程序都没有工作。许多问题之一是我在 UIWebViews 中使用了一些输入。文本输入、选择器等。

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

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

4

4 回答 4

44

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

检查您的 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" />
于 2013-09-25T14:38:08.303 回答
8

在我们的例子中,一旦用户滚动,它就会自行修复。所以这是我们一直用来模拟blur在 any inputor上滚动的修复textarea

$(document).on('blur', 'input, textarea', function () {
    setTimeout(function () {
        window.scrollTo(document.body.scrollLeft, document.body.scrollTop);
    }, 0);
});
于 2014-07-10T07:27:48.620 回答
6

经过两天的实验,我遇到了完全相同的问题并放弃了。似乎:a)所有底部固定的元素都向上移动,以便它们的底部偏移相对于键盘的顶部边缘 c)所有顶部固定的元素都保持在其原始位置(不要像以前那样向上移动)-请注意,顶级绝对元素可以正常工作。

我发现的唯一解决方案是使用自定义 iPad 样式表,将所有固定元素替换为绝对元素,将 CSS 底部属性设置为自动并使用顶部代替

于 2013-10-03T12:50:23.397 回答
-1

Opposum,您的解决方案对我有用,但仅在比例设置为 1.0 时才有效。如果我将其设置为 0.9,那么它就像在您建议的修复之前一样。我将 initial-scale、maximum-scale 和 minimum-scale 设置为 0.9,键盘出现时固定物体的弹跳效果仍在发生。

于 2013-10-11T15:09:14.637 回答