Spark DataGrid в мобильном приложении обрабатывает элементы прокрутки и выбора

У меня есть искровая сетка данных в мобильном приложении, я установил

interactionMode="touch"

и прокрутка dataGrid хороша, у меня возникли некоторые проблемы с добавлением к ней selectionChange eventListener, потому что прокрутка dataGrid автоматически изменит выбор, и вместо простой прокрутки запустится связанная функция...

Как я могу добавить сенсорный день перед выбором индекса, поэтому, если я прокручиваю сетку, выбор не изменится, и он изменится, только если я нажму элемент без прокрутки?


person Marcx    schedule 15.12.2011    source источник


Ответы (1)


Я решил использовать обходной путь....

Вместо добавления selectionChange eventListener я использовал mouseUp и mouseDown, чтобы проверить время между щелчком и выпуском, и если время выпуска меньше, чем щелчок плюс некоторое время, я возвращаю выбор, иначе нет...

<s:DataGrid id="grigliaData"
   sortableColumns="false"
   rowHeight="100"
   interactionMode="touch"
   mouseDown="grigliaData_mouseDownHandler(event)"
   mouseUp="grigliaData_mouseUpHandler(event)"
   top="230" left="5" right="5" bottom="50"
   dataProvider="{listaEventi}" width="100%" height="100%"> 

  //AS Code 
        private var _lastClickEvent:int;
        protected function grigliaData_mouseDownHandler(event:MouseEvent):void
        {
            _lastClickEvent = getTimer();
        }

        protected function grigliaData_mouseUpHandler(event:MouseEvent):void
        {
            if (getTimer() < _lastClickEvent + 200) // 200 = Dalay
            {
                               // return selectedIndex
            }
        }

РЕДАКТИРОВАТЬ: я также добавил проверку положения мышиX и мышиY, теперь сетка отправляет selectionChange, если время до выпуска и изменения положения меньше значения по умолчанию (время/пиксель)...

person Marcx    schedule 21.12.2011
comment
Это работает, за исключением случаев, когда вы щелкаете заголовок столбца в сетке данных, где включена сортировка. Чтобы исправить это, я использовал gridMouseDown и gridMouseUp вместо mouseDown и mouseUp. - person Chris; 08.01.2013
comment
Спасибо за ваш комментарий... После этого у меня была такая же проблема... и я решил изменить if в mouseUpHandler и добавить selectedIndex › -1 и != null :) :) - person Marcx; 08.01.2013