Phonegap在inapppbrowser或相机关闭后会重叠状态栏

7

我正在使用cordova状态栏插件,它在我打开inappbrowser或相机后会出现重叠的问题。

我已经尝试了以下方法:

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

 Add 20px margin, but that only works when the above scenario is encountered, else it shows blank 20px space (Used with cordova plugin)
3个回答

5
尝试按照以下步骤恢复隐藏的重叠部分:
StatusBar.overlaysWebView(true);
StatusBar.overlaysWebView(false);

@StefanRein,请等待 Cordova 在新的 iOS 13 上出现的问题... https://github.com/apache/cordova-ios/issues/661 - Paranoid Android

2
我已使用以下代码解决了这个问题,在相机关闭后执行该代码。
    $cordovaStatusbar.overlaysWebView(true);
    $cordovaStatusbar.overlaysWebView(false);

顺便提一下,我正在使用ngCordova。


1

编辑:

这个问题已经在状态栏插件中得到了解决。

目前NPM注册表只有2.4.3版本cordova-plugin-statusbar。修复已经落实到了Master分支

因此,对于Ionic用户来说,这意味着您需要像这样添加它(也许在之前删除它):

ionic cordova plugin add https://github.com/apache/cordova-plugin-statusbar#master

这会将 GitHub 上的主分支安装为插件。
然后运行类似以下内容的命令将其添加到你的 Xcode 项目中:
ionic cordova build ios --no-build --prod

原始帖子

在JavaScript中使用overlaysWebView方法并传入truefalse参数是可以工作的,但我认为更好的方式是在视图消失时本地调用setNeedsStatusBarAppearanceUpdate方法。

CDVCamera.m https://github.com/apache/cordova-plugin-camera/blob/master/src/ios/CDVCamera.m#L751

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [self setNeedsStatusBarAppearanceUpdate];
}

现在只有viewWillAppear方法被实现。


顺便说一句:也许有人知道为什么以下代码(在viewWillAppear方法中)可以隐藏状态栏:

SEL sel = NSSelectorFromString(@"setNeedsStatusBarAppearanceUpdate");
if ([self respondsToSelector:sel]) {
    [self performSelector:sel withObject:nil afterDelay:0];
}

但是以下内容不适用:


[self setNeedsStatusBarAppearanceUpdate];

viewWillDisappear中,只有在使用performSelector且不带afterDelay参数或者调用[self setNeedsStatusBarAppearanceUpdate];时才会生效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接