I had exactly the same problem, and after a long search, I found a solution here:
Drag and Drop in iPad Web App, Leaving Scrolling Functionality
so look at the correct answer there and at the code snippet that they mentioned (which is actually in other questions). I deleted event.preventDefault() because in my case I did not want to lose the scroll. Hope this helps.
EDIT I will include here the details of my decision, according to Chris's comments. I replaced the Touch Punch plugin for these two functions:
var init = function() { document.addEventListener('touchstart', handler, true); document.addEventListener('touchmove', handler, true); document.addEventListener('touchend', handler, true); document.addEventListener('touchcancel', handler, true); }; var handler = function(event) { var touch = event.changedTouches[0], simulatedEvent = document.createEvent('MouseEvent'); simulatedEvent.initMouseEvent( { touchstart: 'mousedown', touchmove: 'mousemove', touchend: 'mouseup' } [event.type], true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); touch.target.dispatchEvent(simulatedEvent); };
The init function should be called when the document is ready.