You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by "Ryan Frishberg (JIRA)" <ji...@apache.org> on 2012/08/22 05:14:38 UTC

[jira] [Commented] (FLEX-33169) Spark List selection on mobile doesn't work properly

    [ https://issues.apache.org/jira/browse/FLEX-33169?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13439247#comment-13439247 ] 

Ryan Frishberg commented on FLEX-33169:
---------------------------------------

I'm not so sure this is a bug.

On a desktop with a mouse, the list selects the item on mouse down.  However, on a device in touch interaction mode, the list selects the item on mouse up.  The main reason for this is the user may want to scroll and not actually select the item (for instance, selecting the item could transition to a new screen).  Down is different than selected, and an item may be in the down state and then go into the downAndSelected state (and then the selected state) or it may go back into the normal state.  The difference between down and selected is subtle, but down is to show the user that they are on top of something that they might select, but selected means they've actually selected it.

On mouse down, List keeps track of what item was clicked on, and if a scroll hasn't been started, then on mouse up, that item will become selected.  You can see what's going on by putting breakpoints in List.removeMouseHandlersForDragStart() and List.touchInteractionStartHandler().  If the scrolling is getting triggered, you'll see List.touchInteractionStartHandler() being called.  

If that is indeed the issue, there are ways to stop the scroll from happening.  A scroll doesn't start immediately, but it waits to make sure the user has moved their finger a certain amount before deciding it is actually indeed a scroll.  That logic is in TouchScrollHelper.sbRoot_mouseMoveHandler().  The amount needed to scroll can be controlled with Scroller.mx_internal::minSlopInches.  You could also stop all scrolls by calling event.preventDefault() on the "touchInteractionStarting" (TouchInteractionEvent.TOUCH_INTERACTION_STARTING) event.

If that's not the issue, I hope that this will give you some starting points to debug into what's going on.

There used to be a document on the old Adobe wiki describing some of these behaviors (though not in as much code detail), but unfortunately, that seems to be lost.  Hopefully someone at Adobe can find the time to resurrect it.
                
> Spark List selection on mobile doesn't work properly
> ----------------------------------------------------
>
>                 Key: FLEX-33169
>                 URL: https://issues.apache.org/jira/browse/FLEX-33169
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Spark: List
>    Affects Versions: Adobe Flex SDK 4.5.1 (Release), Adobe Flex SDK 4.6 (Release)
>         Environment: iOS 5.x, Android 3.2/4.0, Air 3.0 - 3.3
>            Reporter: Al Birdy
>
> The touch selection of list items on the actual device does not work properly.
> Sometimes, even though the touch has definitely been recognized by the device, the list selection change isn't committed, instead the previously selected item remains selected.
> To reproduce the issue, please set up a new Flex mobile project and add the most basic list with inline renderer to a view:
> <s:List id="myList" width="100%" height="100%">
>     <s:dataProvider>
>         <s:ArrayCollection>
>             <fx:Object label="Item1" />
>                          .....
>             <fx:Object label="Item30" />
>         </s:ArrayCollection>
>     </s:dataProvider>
> </s:List>
> Deploy the app to an actual device (this bug does NOT appear in the emulator!) and randomly try to select items, scroll the list, select again and so on. You'll notice that the down color is sometimes set, but the selection isn't changed.
> For a more detailed description of this bug please see http://stackoverflow.com/questions/11740074/selection-on-spark-mobile-list-only-works-3-out-of-4-times

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira