Using StatusBar plugin works on simulator, not device - ios

I'm at my wits end at this point, trying to get past the IOS7 issue whereby the statusbar overlaps the top of my app. The steps I've taken are:
phonegap plugins add org.apache.cordova.statusbar
Adding the following to my main config.xml:
<gap:plugin name="org.apache.cordova.statusbar"/>
<preference name="fullscreen" value="true" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarStyle" value="default" />
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" onload="true" />
</feature>
From reading various SO posts, I've tried several times adding/removing both the plugin and the ios platform.
The plugin now successfully adjusts the status bar behavior on the simulator (running cordova run ios) but when I use Phonegap Build to actually run it on the device, alas the status bar still overlays my app webview.
Thanks in advance for the help.

You can open up MainViewController.c (I think that's what it's called in Cordova), find the viewDidLoad: method and insert code like this:
if (IS_IOS7_OR_LATER) {
CGRect *frame = self.webview.frame;
frame = CGRectMake(0, 20, frame.size.width, frame.size.height);
self.webview.frame = frame;
}
where IS_IOS7_OR_LATER is a macro or some other code to check if we're running on iOS 7 or later.

Related

Status Bar breaks the layout in cordova-ios#4.3.1 when FB dialog opens

I have cordova project where i use cordova status bar. I recently upgraded to
cordova-ios to 4.3.1 (previous version was 4.2.1). After the upgrade my status bar gets "pushed" up by (for example) fb dialog when it is opened, which breaks status bar layout (only 60% of the status bar is visible) and the bottom menu is also partially visible. This is only happening on cordova-ios, android is fine.
My cordova is 6.5.0 here are the status bar preferences:
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#3e5579" />
<preference name="StatusBarStyle" value="lightcontent" />
<preference name="CDVStatusBar" value="false" />
<preference name="DisallowOverscroll" value="true" />
Any ideas?

Cordova 6.1.1 overscroll and UI bounce IOS

I am working on Ionic 2 having Cordova 6.1.1. My app overscrolls for a down scroll at the top of the page and bounces on a text box focus (when keyboard opens).
This seems to be a generic problem and has some solutions for earlier versions of cordova.
The following preferences are set correctly in my config.xml.
<preference name="webviewbounce" value="false"/>
<preference name="UIWebViewBounce" value="false"/>
<preference name="DisallowOverscroll" value="true"/>
They do not work for Cordova 6.1.1 or above (6.2.0) !!
Thanks.

Full screen scroll (IOS)

I have made an iOS application using PhoneGap Build, Which works fine. I am having some kind of problem while scrolling a page. When I scroll from bottom or from Top whole screen moves. Is there any way to prevent this,as I know this is iOS feature. Which is very nice but in case of my application I do not want this. So help me out.
Use this in you config file:
<preference name="DisallowOverscroll" value="true" />
<preference name="webviewbounce" value="false" />

White flash and transition issue on Jquery Mobile & Phonegap 3

I hate to ask a question that has been asked before, but I am suffering from the white flash when transitioning from the splash screen to main page on IOS (no flashes at all on android), and I have tried all the other suggestions listed in other posts (Phonegape 3 white flash after splash screen ), and none of them worked.
In fact, the suggestion of manually adding in the splash screen plugin and using the splashscreen.show / hide actually has made things worse, the white flash now stays present for 3-5 seconds before moving to the main page.
I've also noticed that my app seems to be ignoring the
<preference name="AutoHideSplashScreen" value="false" />
command, as I have this set in the config.xml file, and the splashscreen shows when the app launches, stays up for a few seconds, and then moves on, when the expected behavior is that it would stay up indefinitely (until I tell it to go away via the splashscreen.hide() command).
Would anyone have any other suggestions for removing or drastically reducing the white flash after the splash screen?
thanks!
Have you tried including the following config.xml values if they aren't already there?:
<preference name="FadeSplashScreen" value="true"/>
<preference name="FadeSplashScreenDuration" value="0.7"/>
<feature name="SplashScreen">
<param name="ios-package" value="CDVSplashScreen" />
<param name="onload" value="true" />
</feature>
I had the same problem a few weeks ago and adding these fixed it for me.

How to fix keyboard issues with Cordova 3.1 on iOS?

I just tested Cordova 3.1 with a sample iOS app and experienced several keyboard issues.
App settings:
Xcode 5
Status bar is hidden
Landscape mode
config.xml
Issues:
All versions: when focus on an input field then whole view is pushed up including navbar.
iOS5/6: tap on an input field to open keyboard, then a black gap is briefly displayed at top of screen before keyboard pushes whole view up (is it status bar?)
iOS7: there is no black gap like #2 issue, but there are other issues:
I still see accessories bar before it's removed (hidden).
Keyboard is translucent then I can see darker background in the space where current view is pushed up.
If I changed , things are even worse:
View is still pushed up, and when input field loses focus then a black gap is flickring at the top of screen, even on iOS 7, what doesn't happen if KeyboardShrinksView = false.
Keyboard is no longer translucent on iOS 7.
Below is my config.xml
<preference name="DisallowOverscroll" value="true" />
<preference name="HideKeyboardFormAccessoryBar" value="true" />
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
<preference name="KeyboardShrinksView" value="true" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="EnableLocation" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="AutoHideSplashScreen" value="false" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="BackupWebStorage" value="none" />
<preference name="Fullscreen" value="true" />
<preference name="Orientation" value="landscape" />
Check out this thread. A lot of the same issues were reported here. It would be best if you added your information to the Cordova JIRA bug tracking system since that's where all the cordova developers work out of.
https://issues.apache.org/jira/browse/CB-3020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13769996#comment-13769996
I was able to get the top header from sliding around by adding in a simple animation to the resizing of the webview. Here is the code that was put in the keyboardWillShow function in CDViewController.m
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[self.webView setFrame:(CGRectMake(newFrame.origin.x, newFrame.origin.y, newFrame.size.width, newFrame.size.height))];
[UIView commitAnimations];
I was close to getting the black bar from being hidden but couldn't get it working very well. This post describes what you will need to do. You'll need to hae the webview reizing animation match the keyboard animation.
iOS 7 - Keyboard animation

Resources