Textfield不会集中在iOS7中的UI WebView中

时间:2013-10-23 13:03:15

标签: cordova uiwebview sencha-touch ios7

如果文本字段位于屏幕的下半部分,则文本字段不会聚焦,但如果它位于上半部分,则它可以正常工作。我在iOS7中的模拟器以及已安装的应用程序中的设备中发现了这个问题。我使用sencha touch& amp; phonegap,但我不认为这是问题的原因,因为即使是位于屏幕高度一半以下的简单文本字段也会失败。

当我点击文本字段时,操作系统应该在键盘显示之前将文本字段推到上方。但这不会发生,而只显示键盘没有任何焦点或推动屏幕。我应该如何在iOS7中启用它,以便我可以解决问题。

由于

4 个答案:

答案 0 :(得分:10)

终于找到了问题的原因。如果您使用的是UIWebview,则应将body标签的最小高度设置为设备的内部高度。例如,适用于iPhone 4S的460px或适用于iPhone 5的520px

内高=设备高度 - 状态栏高度= 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中不再正常工作。如果是这种情况,你需要以老式的方式移动它。

Move a textField up when keyboard is present

答案 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;
    }
}