Hi Team,
I am currently working on the swipe issue with ScrollableStageText on
mobile and would like your advice / help
The issue is the following: you cannot initiate a scroll/swipe by
touching inside a TextInput or TextArea.
1) current situation:
- in ScrollableStageText, the StageText is only shown when TI is in focus,
and is replaced by a proxy when out of focus.
- when scrolling, only the proxies are scrolled, so it works well.
- when editing TI2 after TI1:
- TI1 receives focus out => TI1 stageText is hidden, proxy shown
- TI2 receives the focus on mouse down => TI2 stage text is focused
- stageText for TI2 is displayed (and proxy hidden)
=> the problem, is that since focus is set on mousedown, it's too late to
detect scrolling,
so I had to prevent it, by calling event.preventDefautl() in
touchInteractionStarting handler.
2) proposed solution
To overcome that issue, I changed the focus to be set on MOUSE UP, instead
of mouse down, so that I can detection touch scroll, and prevent editing.
It works pretty well but has the following side effect :
When editing TI1 after TI2, the soft keyboard (which was visible), lowers
when pressing TI2, and raises back when releasing your finger.
The reason for that is that is when pressing TI2:
- TI1 has received focus out, so its StageText it's not visible anymore
- TI2 did not receive focus yet, so its stageText is not visible yet
=> no stageText, no SoftKeyboard.
TI2 stage text is assigned focus only when finger is released.
3) proposed solution to the side effect:
Since the only way of having a soft keyboard visible is to have an active
StageText, and call assingFocus() on it,
I added a dummy static StageText to the stage, with no text and a
viewport extent of 0,0.
This stageText is assigned focus between the time finger is pressed, so
TI1 and TI2 stage texts are not visible, and the finger is released, where
TI2 stage text is displayed.
That way, the soft keyboard does not disappear.
______________
It works well, but I consider the dummy StageText as a HORRIBLE HACK.
So if someone has a better solution that also meets the requirements, I
will be happy to take it.
Regards,
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : vendredi 22 novembre 2013 11:37
À : dev@flex.apache.org
Objet : RE: Mobile TextInput Implementation status
Hi,
I fixed the two issues that were reported in the JIRA ticket by Colins
Childs.
fixed two issues reported above:
- two focused text inputs
- stage text floating above content.
Committed and pushed to develop branch
https://git-wip-us.apache.org/repos/asf?p=flex-sdk.git;a=commit;h=9e4bf21f
Mobile Mustella test pass:
- mobile/components/TextInput
- mobile/compoents/TextArea
- mobile/Softkeyboard
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : mardi 19 novembre 2013 18:18
À : dev@flex.apache.org
Objet : RE: Mobile TextInput Implementation status
Sure. You need mobilecomponents and mobiletheme
-----Message d'origine-----
De : omup...@gmail.com [mailto:omup...@gmail.com] De la part de OmPrakash
Muppirala Envoyé : mardi 19 novembre 2013 18:14 À : dev@flex.apache.orgObjet :
RE: Mobile TextInput Implementation status
On Nov 19, 2013 9:05 AM, "Maurice Amsellem" <maurice.amsel...@systar.com>
wrote:
Since jenkins is down, do you need the updated swc ?
Which project is it? I can just compile it and drop it in the sdk
directory.
Thanks,
Om
-----Message d'origine-----
De : omup...@gmail.com [mailto:omup...@gmail.com] De la part de
OmPrakash
Muppirala
Envoyé : mardi 19 novembre 2013 17:55
À : dev@flex.apache.org
Objet : RE: Mobile TextInput Implementation status
On Nov 19, 2013 4:53 AM, "Maurice Amsellem"
<maurice.amsel...@systar.com>
wrote:
Fixed a few other issues
(see https://issues.apache.org/jira/browse/FLEX-33166)
FIXED : Soft keyboard partially closes/opens when moving the
focus
from one TI to another.
to fix the issue above, had to trigger TI edition on mousedown
instead
of mouse click (like in StyleableStageText)
fixed bug caused by the above.
All related mustella test pass. ( mobile/TextInput, mobile/TextArea,
mobile/SoftKeyboard)
Om, can you please make a last test run on Android, so I can close
the
ticket.
Will do, later in the night for me.
Thanks,
Om
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : mardi 19 novembre 2013 00:36 À : dev@flex.apache.org Objet
: RE: Mobile TextInput Implementation status
Just received results of Om testing on Android (Tested on Samsung
Galaxy
SIII (Android 4.1.2) and Samsung Galaxy Tab 2 (Android 4.2.2)).
It's working fine.
Thanks you Om for the quick testing, that's really good news.
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : lundi 18 novembre 2013 16:49 À : dev@flex.apache.org Objet
: Mobile TextInput Implementation status
Memory profiling of the new skins:
It's as expected: alloc memory = pixel width x pixel height x
4bytes
per pixel.
First figure is for iPad , second is for iPad retina.
- 25KB / 100 KB of bitmap memory allocated for a single line TI with
default size
- ~500KB / ~ 2 MB for a pages stuffed with text inputs / text Areas
- 3 MB / 12 MB for a full-page TA => in this case, it's better to
use the
old skins.
The bitmap is allocated while the TI is added to the stage, and
disposed
when it's removed from the stage
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : lundi 18 novembre 2013 02:10 À : dev@flex.apache.org Objet
: RE: Mobile TextInput Implementation status
1) to help debug if something goes wrong on Android, you can set the
following mx_internal flag:
ScrollableStageText.debugProxyImage = true;
It will display the proxy bitmaps in magenta background.
2) proxy methods in ScrollableStageText has been abstracted on
purpose to
DisplayObject instead of Bitmap.
This is so that one could override the class to use another proxy (eg.
StyleableTextField) which is less memory consuming than bitmaps.
In wich case, you will have to override:
createProxy
updateProxy
disposeProxy
3) StageTextSkinBase inner textDisplay creation method is
externalized so
that it can be customized.
Example for ScrollableStageTextInputSkin:
override protected function
createTextDisplay():IStyleableEditableText
{
return new ScrollableStageText(multiline);
}
That way, you can derive from existing skins, instead of monkey
patching
the default skin, if you only need to change the internal editable
text
class.
Note also that displayText is now of type IStyleableEditableText,
instead
of StyleableStageText, for the same purpose.
Regards,
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : lundi 18 novembre 2013 01:49 À : dev@flex.apache.org Objet
: RE: Mobile TextInput Implementation status
Run mustella tests:
Mobile/Components/TextInput
Mobile/components/TextArea
Mobile/StageText
All pass.
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : lundi 18 novembre 2013 01:11 À : dev@flex.apache.org Objet
: RE: Mobile TextInput Implementation status
Hi, I have committed and pushed tentative fix for
https://issues.apache.org/jira/browse/FLEX-33166
Tested on iPad 2 / 3.
Not tested on Android.
I couldn't run mustella mobile tests. For some reason, they are
broken
on my machine ( says: Passes: 0 / Fails: 0).
The new skins are now the defaults for TextInput and TextArea on
mobile:
TextInput skinClass =
spark.skins.mobile.ScrollingStageTextInputSkin
TextArea skinClass = spark.skins.mobile.ScrollingStageTextAreaSkin
The old skins are still there, under the same name.
Please review and tests, and this is a sensitive change...
Your comments and feedback are welcome.
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : lundi 18 novembre 2013 00:08 À : dev@flex.apache.org Objet
: RE: Mobile TextInput Implementation status
Founds some bugs, so I won't commit until they are fixed...
Maurice
-----Message d'origine-----
De : Maurice Amsellem [mailto:maurice.amsel...@systar.com]
Envoyé : dimanche 17 novembre 2013 21:18 À : dev@flex.apache.orgObjet :
RE: Mobile TextInput Implementation status
I can help out with Android testing.
Thanks
Should I wait for the nightly or are these fixes on a branch?
Nightly
would be preferable so as to allow more people to test the fix.
I will push to the develop/ so that they be in the nightly
It would be better to keep the old one around with the same name.
Folks
might have subclassed it to build their own implementations.
What about :
ScrollableStageText
ScrollableStageTextInputSkin
For the new classes ?
Maurice
-----Message d'origine-----
De : omup...@gmail.com [mailto:omup...@gmail.com] De la part de
OmPrakash
Muppirala Envoyé : dimanche 17 novembre 2013 20:27 À :
dev@flex.apache.orgObjet : Re: Mobile TextInput Implementation status
On Nov 17, 2013 10:56 AM, "Maurice Amsellem"
<maurice.amsel...@systar.com>
wrote:
Hi,
Here is a brief status of the implementation of Mobile Text Input,
along
with some questions:
Implementation overview:
The change is mainly on the class StyleableStageText, which now
takes the
opposite approach than the previous one:
- display proxy image bitmap by default
- display StageText only when editing
StageTextInputSkin/StageTextAreaSkin has been modified to use this
class
- to make it easier to change StageTextInputSkin internal
StyleableStageText component, the variable textDisplay is now of
type
IStyleableEditText
Behavior changes:
- scrolling and overlapping of text is well managed , as it
always uses
the bitmap proxy, which is a Flex component: all the text inputs
are
scrolling
- text occluding while editing is not managed yet, which means
the
edited text may overlap other UIs. (TO BE DONE)
Testing:
- tested on iPad 2 and iPad 3: TI in scrolling forms, TI in
callouts
- *NEEDS TO BE TESTED ON ANDROID*
- memory consumption tests yet to be done
- mustella test yet to be run
Questions:
- Can someone please test on Android ?
I can help out with Android testing. Should I wait for the nightly
or
are these fixes on a branch? Nightly would be preferable so as to
allow
more people to test the fix.
Thanks,
Om
- I have chosen to directly replace StyleableStageText.
Maybe I can also leave the old StyleableStageText with a different
name,
so that it can be used in case there is an issue with the new one ?
or
the other way?
It would be better to keep the old one around with the same name.
Folks
might have subclassed it to build their own implementations.
Now that it is an interface, it's easy to subclass the
StageTextInputSkin, and override createTextDisplay() to use another
class.
Maurice