dragend icon indicating copy to clipboard operation
dragend copied to clipboard

After applying dragend, touch devices' native scrolling up/down is gone

Open ianthedev opened this issue 9 years ago • 7 comments

On touch devices, after applying dragend, we can no longer scroll up/down each dragend page's content (when content is longer than screen height).

ianthedev avatar Oct 15 '14 14:10 ianthedev

+:100:

The Mobile demo is affected. Can't scroll down... I'm switching back to SwipeJS for this reason but I'll regularly check if dragend gets updated.

siamkreative avatar Oct 29 '14 03:10 siamkreative

And I promise that I'll work on this. Sometime :-)

Stereobit avatar Oct 29 '14 07:10 Stereobit

Any update on this? Trying to get this to work for me as well I haven't come up with much yet. Trying to see what direction the pages pick up and its strictly left and right. Never got a single up or down on the direction.

mikehuebner avatar Mar 23 '15 23:03 mikehuebner

I was able to mitigate this issue by commenting out "event.preventDefault()" in the onMove method. It's not the best solution but it works.

jamealg avatar Oct 30 '15 19:10 jamealg

@Ian-Y @jamealg I have found another JavaScript slider (also library agnostic) that works best and seems to be more maintained: https://github.com/wilddeer/Peppermint

siamkreative avatar Nov 05 '15 02:11 siamkreative

@SiamKreative Thank you very much!

ianthedev avatar Nov 05 '15 02:11 ianthedev

I sort of found a solution, there are 2 dragend.js files, the one in the root directory and second is in the dist folder. Both of them have their issues. The first one has scrolling issue fixed, but left/right arrows do not work properly and the second one has just the scrolling issue. So what i did was, i just copied the updated code in _onMove function from the first file into the second file. Swiping on windows phone becomes nearly impossible to achieve (you can always add arrows), but android and IOS seemed to work fine. This is how my onMove function looks like in dragend.js file

_onMove: function( event ) {

    event = event.originalEvent || event;

    // Fix mobile vertical scrolling, credits go to ptisdel
    var coords = getCoords(event),
    x = this.startCoords.x - coords.x,
    y = this.startCoords.y - coords.y;
    if (Math.abs(y) > Math.abs(x)) return;

    // ensure swiping with one touch and not pinching
    if ( event.touches && event.touches.length > 1 || event.scale && event.scale !== 1) return;

    if (this.settings.disableScroll) event.preventDefault();

    if (this.settings.stopPropagation) {
      event.stopPropagation();
    }

    var parsedEvent = this._parseEvent(event),
        coordinates = this._checkOverscroll( parsedEvent.direction , - parsedEvent.distanceX, - parsedEvent.distanceY );

    this.settings.onDrag.call( this, this.activeElement, parsedEvent, coordinates.overscroll, event );

    if ( !this.preventScroll ) {
      this._scroll( coordinates );
    }
  },

intsfanatic avatar Aug 13 '16 23:08 intsfanatic