inapppbrowser或相机关闭后Phonegap状态栏重叠
Posted
技术标签:
【中文标题】inapppbrowser或相机关闭后Phonegap状态栏重叠【英文标题】:Phonegap status bar overlaps after inapppbrowser or camera closed 【发布时间】:2017-07-20 13:06:24 【问题描述】:我正在使用 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)
【问题讨论】:
【参考方案1】:尝试执行以下操作来恢复隐藏的重叠:
StatusBar.overlaysWebView(true);
StatusBar.overlaysWebView(false);
【讨论】:
@StefanRein 并等待 Cordova 上的新 ios 13 问题...github.com/apache/cordova-ios/issues/661【参考方案2】:关闭相机后,我已经使用此代码解决了这个问题。
$cordovaStatusbar.overlaysWebView(true);
$cordovaStatusbar.overlaysWebView(false);
顺便说一句,我正在使用 ngCordova。
【讨论】:
【参考方案3】:编辑:
这已在 StatusBar plugin 中修复
目前是cordova-plugin-statusbar
的NPM registry has only the version 2.4.3
。固定登陆Master branch
所以基本上对于离子人来说,这意味着你需要像这样添加它(也许之前删除它):
ionic cordova plugin add https://github.com/apache/cordova-plugin-statusbar#master
这会为您安装来自 github 的 master 分支作为插件。
然后运行类似这样的代码将其放入您的 Xcode 项目中:
ionic cordova build ios --no-build --prod
原帖
虽然在 javascript 中使用 true
和 false
调用方法 overlaysWebView
有效,但我认为正确的方法是在视图消失时本地调用 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 或调用 [self setNeedsStatusBarAppearanceUpdate];
时忽略 afterDelay 才有效。
【讨论】:
以上是关于inapppbrowser或相机关闭后Phonegap状态栏重叠的主要内容,如果未能解决你的问题,请参考以下文章