gpt4 book ai didi

javascript - Cordova/Phonegap 3.4.0 iOS 7.1 - 键盘/Web View 问题

转载 作者:IT王子 更新时间:2023-10-29 08:20:47 27 4
gpt4 key购买 nike

我已经为这个问题苦苦挣扎了一个多星期,如果能得到任何帮助,我将不胜感激。我会按照我的理解来解释这个问题,但如果我说错了,请指正。

在 iOS 7.0.x 中,当键盘显示出来时, WebView 会调整大小,这样键盘占用的区域就不会被视为视口(viewport)窗口大小的一部分。在 7.0 之前,Cordova Keyboard 插件处理此 Web View 大小调整。由于 7.0 native 以所需方式处理键盘显示,因此键盘 shrinkView config.xml 的选项文件在这次提交时变成了“No-op”:

https://github.com/apache/cordova-plugins/commit/20215013bf91b659b73d5f428ae91dd58be1273a

但是,在 7.1 中,键盘占据的区域出现在 WebView 之上。这有一个痛苦的副作用。假设您想在前面加上 <div>带有文本区域的正文(例如发表评论或聊天回复),即;

<body>
<div id="app">...</div>
<div id="reply">
<textarea></textarea>
</div>
</body>

示例 CSS:

body {
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
overflow: hidden;
}
#reply {
position: absolute;
bottom: 0;
left: 0;
right: 0;
}

每当您聚焦或输入到文本区域时,Web View 将 native 重新居中输入字段。由于 WebView 仍然考虑屏幕的整个高度,div 不会固定在底部,从而破坏布局。

我试过以下方法:

  • 为正文和固定的 div 使用 CSS。位置固定/绝对似乎没有什么区别。为 body 设置明确的高度没有任何作用。

  • 元视口(viewport)选项的所有可能组合。这是我目前正在使用的:

<meta name="viewport" content="user-scalable=no, initial-scale=1, minimum-scale=1, maximum-scale=1, width=device-width, height=device-height, minimal-ui" />

  • 取消注释 cordova 键盘插件中的“No-op”。这仍然会像在 iOS 7.0.x 中那样破坏布局。

  • input 上有 JS 事件监听器和 focus事件以继续计算底部偏移量以将 div 保持在底部。这非常令人不安,因为它与将输入字段居中的 native Web View 行为作斗争。

  • 更改元标记以在显示/隐藏键盘后设置明确的高度。

我正在使用 Cordova 3.4.0-0.1.3

有没有其他人遇到过这个问题?有什么解决方案或想法吗?

最佳答案

对我来说,一个快速修复涉及在输入失去焦点时强制窗口滚动回原位:

$("input").on('blur',function(){

//set brief timeout to let window catch up
setTimout(function(){

//reposition at top left corner of screen
window.scrollTo(0,0);

},20);

});

希望对您有所帮助!

关于javascript - Cordova/Phonegap 3.4.0 iOS 7.1 - 键盘/Web View 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22773709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com