a5hik / ng-sortable

AngularJS Library for Drag and Drop, supports Sortable and Draggable. Supports Touch devices.

Home Page:http://a5hik.github.io/ng-sortable/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Long Press option not working on mobile devices

prasannavalleti opened this issue · comments

@a5hik any updates on this ?

I am also facing same issue. On long press of Item my screen is getting reloaded :-(

longTouch attribute never gets applied.

It didn't work for me, although the longTouch option was set to true.

I changed the bindDrag function in the ng-sortable.js file to bind longTouchStart and longTouchCancel to the 'touchstart' and 'touchend' events. Now the drag & drop also works on mobile for me.

Before change:

bindDrag = function () {
            if (hasTouch) {
              if (isLongTouch) {
                if (isIOS) {
                  element.bind('touchstart', longTouchStart);
                  element.bind('touchend', longTouchCancel);
                  element.bind('touchmove', longTouchCancel);
                } else {
                  element.bind('contextmenu', dragListen);
                }
              } else {
                element.bind('touchstart', dragListen);
              }
            }
            element.bind('mousedown', dragListen);
          };

After change:

bindDrag = function () {
              element.bind('touchstart', longTouchStart);
              element.bind('touchend', longTouchCancel);
              element.bind('touchmove', longTouchCancel);
              element.bind('contextmenu', dragListen);
              element.bind('touchstart', dragListen);
            element.bind('mousedown', dragListen);
          };

So it seems that some of touch events were bound only on iOS devices. Binding them on every device has solved the problem for me. Maybe there were changes in the events that the browsers produce.