Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS 7状态栏重叠用户界面-Cordova 3.0需要解决方案_Javascript_Cordova_Ios7_Statusbar - Fatal编程技术网

Javascript iOS 7状态栏重叠用户界面-Cordova 3.0需要解决方案

Javascript iOS 7状态栏重叠用户界面-Cordova 3.0需要解决方案,javascript,cordova,ios7,statusbar,Javascript,Cordova,Ios7,Statusbar,我有一个PhoneGap/Cordova 3.0应用程序。状态栏与iOS7中的UI重叠。我读过很多关于使用margintop:20px或自定义状态栏插件的答案。问题是,使用边距顶部时,当文本输入处于焦点时,它会将所有视图向上推(这是预期的),当它失去焦点时,视图会保持在顶部,并忽略边距20px值 StatusBar插件需要Cordova 3.1,我想使用3.0版本,因此插件解决方案不适合我的特定应用程序 是否有解决Cordova 3.0中状态栏重叠问题的解决方案 我希望状态栏处于活动状态(不隐藏

我有一个PhoneGap/Cordova 3.0应用程序。状态栏与iOS7中的UI重叠。我读过很多关于使用margintop:20px或自定义状态栏插件的答案。问题是,使用边距顶部时,当文本输入处于焦点时,它会将所有视图向上推(这是预期的),当它失去焦点时,视图会保持在顶部,并忽略边距20px值

StatusBar插件需要Cordova 3.1,我想使用3.0版本,因此插件解决方案不适合我的特定应用程序

是否有解决Cordova 3.0中状态栏重叠问题的解决方案


我希望状态栏处于活动状态(不隐藏)。我使用AppBuilder在windows上开发。

如果您不想隐藏状态栏

隐藏状态栏

在xcode中打开项目首先选中状态栏样式-xcode中的常规项目设置下的复选框(在应用程序启动期间隐藏)

选择projectname-info.plist(xcode中的参考资料部分)


并添加键“查看基于控制器的状态栏外观”和值“否”

这很容易。试试这个

将此代码放在MainViewController.m的MainViewController@implementation之后,@end之前

- (void)viewDidLayoutSubviews{

    if ([self respondsToSelector:@selector(topLayoutGuide)]) // iOS 7 or above
    {
        CGFloat top = self.topLayoutGuide.length;
        if(self.webView.frame.origin.y == 0){
            // We only want to do this once, or if the view has somehow been "restored" by other code.
            self.webView.frame = CGRectMake(self.webView.frame.origin.x, self.webView.frame.origin.y + top, self.webView.frame.size.width, self.webView.frame.size.height - top);
        }
    }
}

关于失去焦点

var currentIosVersion = getCurrentIosVersion();//RETURNS IOS VERSION OF THE DEVICE

if(currentIosVersion == "7")
{

    /* if there is status bar then replace 768  by 748 
       Presence of status bar in our project can be detected via Cordova plugin
    */

    var content="width=device-width, height=768, initial-scale=1.0, maximum-scale=1.0,target-densityDpi=device-dpi";
    document.getElementsByName('viewport')[0].content = content;

}

您可以在config.xml中添加这一行

 <preference name="fullscreen" value="false" />

如果有人在Cordova 4中遇到同样的问题,我的工作就是安装StatusBar插件:

然后将下一个代码添加到应用程序(主功能内部):

为了个性化颜色,我还添加了以下内容:

StatusBar.backgroundColorByHexString("#1b75bc");

您可以找到文档

此代码是否隐藏状态栏?-我希望它是活跃的。顺便说一句:我没有XCode,我是在Windows上使用AppBuilder开发的。这个方法会隐藏我的错误状态,因为我没有提到它。我希望它是主动的。对不起,我就是这么做的。问题是,当我单击一个输入字段,webview上升时,它不会返回到原来的页边距顶部:20px当文本输入失去焦点时,它会停留在最顶部(0px)。这正是我的问题。你需要为键盘的显示和隐藏编写一个事件,该事件将推动UIView上下移动以及方向改变。我尝试了这个方法,花了无数个小时试图修复iOS 7的UIView与phonegap和状态栏问题。到目前为止,最好的解决方案是隐藏状态栏。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。
StatusBar.overlaysWebView(false); 
StatusBar.backgroundColorByHexString("#1b75bc");