I am working on a chat based app & it deals a lot with textinput, managing focus, soft keyboard and scaling the UI based on all of that. For reference consider something like whatsapp's chatting screen. By using the native android soft keyboard I am facing following issues:
1. the wrong height of the soft keyboard :
- it is reported here : https://bugbase.adobe.com/index.cfm?event=selectBug&CFGRIDKEY=4085072
- on android, the height returned is almost always inconsistent & wrong.
- this makes it very difficult to resize the screen as we dont have the right height of the screen.
- this bug is there on the bug base since Nov 2015 & this is really disappointing that it is not being resolved. THE MOST BASIC FUNCTIONALITY REQUIRED FOR AN APP USING TEXTINPUT and it is buggy...!!!
- there is an ANE for resolving this issue : https://github.com/freshplanet/ANE-KeyboardSize
- the problem with the ANE is that, it gives the right value after a slight delay from the point where the keyboard is triggered. This introduces a lag.
2. issue of keeping focus on the text input :
- it is reported here : https://bugbase.adobe.com/index.cfm?event=selectBug&CFGRIDKEY=4057869
- even if you somehow manage to get the correct height this issue again creates more problems.
- a very important feature for a chat based app, without the fix, it completely breaks the UX of the app
- there is a work around solution suggested by Josh here : http://forum.starling-framework.org/topic/textinput-and-closing-soft-keyboard-on-focus-lost
- I am not sure of the progress on this bug, but for now I am using the fix suggested by Josh
Other then these two issues, and even after using the above 2 work around solutions I am NOT satisfied from a user experience point of view in my app. While chatting, everything should be as responsive as possible & these issues causes some lag & inconsistency.
Finally instead of waiting for Adobe to fix them, I think the only reliable solution that I can think of (for now) is to write my own virtual keyboard.
There is an open source library here : http://cote.cc/projects/softkeyboard
This project is not being updated anymore, and I am kind of thinking some other approach for creating the keyboard.
So before starting to develop I want to have some expert opinion from you guys. For me the advantages are as follows :
- I'll have everything under control : layout, color/theme of the keyboard, size, transitions etc.
- there wont be a textinput, in fact I'll have a VirtualTextInput, which will look like a textinput but will trigger my VirtualSoftKeyboard. I dont think there will be any lag in this way.
- I can manage the focus problem too, as there wont be any focus issue at all.
There are some drawbacks, but comparing it to a buggy & broken user experience which can seriously affect my user retention, I think this is worth the time.
What do you guys think..?? Is this the right approach ?? Or may be I am missing something which I can face during developing a virtual keyboard !!??