CN1: iOS: Showing ToastBar when virtual keyboard is visible - codenameone

On iOS (ipad pro) I cannot see the ToastBar showing messages, when the virtual keyboard is visible.
However on Android devices the ToastBar is visible in the same szenario.
Is there way to work around this or do I have to use modal dialogs?

I think I see a problem related to that, it seems we don't handle the special case of iOS VKB's correctly.
I made a fix for this which should be there for the coming update of Codename One this weekend.

Related

scrollComponentToVisible not working in codenameone on android, with keyboard open

On Android, when using scrollComponentToVisible and the keyboard is open, the component is not scrolled to the actual visible area, but under the keyboard.
The problem was solved by wrapping the code in a "callSerially" statement. I also changed the direct scroll call to a "requestFocus" scroll coupled with a "startAsyncEditing".

Capture.captureAudio() within a modal dialog on Android 8+ does not return until dispose of dialog

I instantiate a modal dialog and have a button that executes Capture.captureAudio()
On Android 8+ running on Samsung TAB S5e and Galaxy Tab A8 devices,
Tapping the button opens the recording dialog as expected, however when tap "Save" we don't get the String that Capture.captureAudio() returns until I dispose the current dialog.
Then the Capture.captureAudio() results are returned to me.
Works correctly on IOS and PC.
My Dialog is executed on the EDT, the Capture.captureAudio() is executed from a lambda expression and on a separate EDT
Thoughts?
Regards
Try showing the Dialog as modless using the showModless() method. Alternatively try using an InteractionDialog as discussed here.
We generally recommend avoiding Dialog for any complex UI especially one that might use the invokeAndBlock semantics. Nesting those can lead to unexpected side effects as you can see in this case. This only happens on iOS since the iOS implementation uses invokeAndBlock() internally

Black screen flashes at the start android app

The black screen is visible for a moment at the start of the app in android devices. I've tested in all of my recent apps and it is there. In some devices, the black screen appears a bit longer especially in oreo.
Have a look at the video here
How can I solve it?
This is triggered because your start method is taking too long to process the Form or the Form's rendering code is too slow. When that happens Android tries to draw your app but it takes too long and so it just shows what it has.
Remove the clutter from start and just show a Form that's a splash screen then transition to the actual app. Optimize your actual app UI by using profilers & the performance monitor tool.
In my opinion, showing a splash screen before the actual app (as suggested by Shai) is a good idea to be sure that all the splash screen images generated for iOS by the Codename One build servers are as you want them: in this way, the app startup look will be very similar on iOS and Android. Some popular app, like Facebook, use a splash screen that show their icon at the middle of the screen.
However, about your question, in my "new" Android 7 device, almost "all" the apps, even the ones preinstalled with Android, show a blank screen for a fraction of second at startup. So I suppose that it's normal. That blank screen is usually white, but is some app the color of the blank startup screen is different (for example, in ES File Manager is gray). Also my Codename One apps show a blank white screen at startup (before the splash screen in the apps in which I implemented it). Maybe the color of the startup blank screen depends on the styling of the app.

Google maps api not recognising any events on iOS7 (can't pan, zoom, click etc)

I'm implementing google maps api v3 in angularjs. I have two maps on the page: one shows the user's location and sits in the sidebar while the other allows users to add markers. This second map is only used in a form to add entries to the system.
It work fine in everything except mobile Safari on iOS 7. On an iPad running iOS 7 the side map works - ie: you can pan and zoom, but the other map is as if it's an image - no panning, zooming, or clicking to add a marker.
In the iPhone on iOS7 both maps are static, as if they're images. Debugging in Safari doesn't show any errors.
Debugging does show that they don't ever fire the click event to add markers.
The iPad on iOS6 is fine. Android is fine. Desktop browsers are fine.
I'm using Angular-ui ui.Maps to generate the maps.
I can't even think how to debug this further. Has anyone had trouble like this with iOS 7?
.
Is iOS7 mobile Safari the new IE? I've had quite a few issues now that only crop up on iOS7.
Update:
The Doctor was right. Here's the code to fix it:
$timeout(function(){
_.each(document.getElementsByClassName("gm-style"), function(e){
this.addEventListener('touchstart', function(event){});
});
}, 3000);
I get the sense that iOS7 Safari is a bit buggy when it comes to touch events.
I found this thread which talks about a specific touch event but I think other events have similar issues. `-webkit-overflow-scrolling: touch` broken for initially offscreen elements in iOS7

My Google Maps custom overlays are not "active" anymore in Chrome and Firefox, but work fine in IE

Since a couple of months, my custom overlays appear to be disabled.
They are still visible and displayed correctly, but the link does not work anymore, nor does the CSS that changes z-index. They just seem to be drawn, and that's it.
The link is there, but I can't click it.
This happened in Chrome and Firefox, not in IE.
Has anyone had similar issues? I've searched and searched the web again and again, nothing. However I'm sure I must've missed something.
Ok, I finally figured it out: wrong overlay layer. One is specifically dedicated to mouse events: overlayMouseTarget

Resources