如果文本字段位于屏幕的下半部分,则文本字段不会聚焦,但如果它位于上半部分,则它可以正常工作。我在iOS7中的模拟器以及已安装的应用程序中的设备中发现了这个问题。我使用sencha touch& amp; phonegap,但我不认为这是问题的原因,因为即使是位于屏幕高度一半以下的简单文本字段也会失败。
当我点击文本字段时,操作系统应该在键盘显示之前将文本字段推到上方。但这不会发生,而只显示键盘没有任何焦点或推动屏幕。我应该如何在iOS7中启用它,以便我可以解决问题。
由于
答案 0 :(得分:10)
内高=设备高度 - 状态栏高度= 460px,它应该基本上是应用容器的高度。我把这段代码放在我的手机间隙设备就绪功能和放大器中。一切都像魅力一样
document.addEventListener("deviceready", function(){
var body = document.getElementsByTagName('body')[0];
body.style.minHeight=window.innerHeight + 'px';
}, false);
答案 1 :(得分:5)
这是一个已知的iOS7错误,请尝试
<meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, target-densityDpi=device-dpi">
非常适合我,也不包括任何javascript。
在元标记中设置height=device-height
似乎可以解决这个问题。
答案 2 :(得分:1)
这不会在iOS中自动发生。当UITextField成为第一响应者时,键盘将出现,然后您可以向上移动textField或向上滚动整个视图以使其可见。这听起来像Sencha / phonegap为你处理这个问题,并且在iOS7中不再正常工作。如果是这种情况,你需要以老式的方式移动它。
答案 3 :(得分:1)
您可以将Meta标记更改为:
请注意Sencha动态添加元标记,我添加了以下函数:
function init()
{
var ua = navigator.userAgent;
uaindex = ua.indexOf( 'OS ' );
userOSver = ua.substr(uaindex + 3, 3 ).replace( '_', '.' );
userOsve = userOSver.substr(0,1);
if(userOsve == "7")
{
if(screen.height > 481)
var phone_height = "550"
else
var phone_height = "450"
var content="width=device-width, height="+phone_height+", initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi";
document.getElementsByName('viewport')[0].content = content;
}
}