Respuesta

2

Lo he solucionado yo mismo. Es tan fácil como hacer los eventos del mouse para tocar eventos.

Así que la solución es buscar & reemplazar:

mousedown -> touchstart 
mouseup -> touchend 
mousemove -> touchmove 
10

Aquí fue mi solución para hacer eventos de apoyo al tacto Mootools Arrastre. Este método no requiere de mí para editar los mootools más archivos que no uso Class.refactor (Esto sólo se prueba con Mootools v.1.3.1) - sino que también no se rompe los habituales eventos de clic

Class.refactor(Drag, 
    { 
     attach: function(){ 
      this.handles.addEvent('touchstart', this.bound.start); 
      return this.previous.apply(this, arguments); 
     }, 

     detach: function(){ 
      this.handles.removeEvent('touchstart', this.bound.start); 
      return this.previous.apply(this, arguments); 
     }, 

     start: function(event){ 
      document.body.addEvents({ 
       touchmove: this.bound.check, 
       touchend: this.bound.cancel 
      }); 
      this.previous.apply(this, arguments); 
     }, 

     check: function(event){ 
      if (this.options.preventDefault) event.preventDefault(); 
      var distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2))); 
      if (distance > this.options.snap){ 
       this.cancel(); 
       this.document.addEvents({ 
        mousemove: this.bound.drag, 
        mouseup: this.bound.stop 
       }); 
       document.body.addEvents({ 
        touchmove: this.bound.drag, 
        touchend: this.bound.stop 
       }); 
       this.fireEvent('start', [this.element, event]).fireEvent('snap', this.element); 
      } 
     }, 

     cancel: function(event){ 
      document.body.removeEvents({ 
       touchmove: this.bound.check, 
       touchend: this.bound.cancel 
      }); 
      return this.previous.apply(this, arguments); 
     }, 

     stop: function(event){ 
      document.body.removeEvents({ 
       touchmove: this.bound.drag, 
       touchend: this.bound.stop 
      }); 
      return this.previous.apply(this, arguments); 
     } 
    }); 
+0

awesome, +1 - si esto ha sido probado en producción y funciona, ¿por qué no modificar las clases originales y enviar una solicitud de extracción a mootools-more en su lugar? los dispositivos táctiles están mucho más extendidos y es útil tenerlos listos para usar. –

+0

¡Genial! ¿sabes cómo deshabilitar el desplazamiento mientras se arrastra el evento táctil? Mi ventana se desplaza al mismo tiempo que arrastra ... – Sergio

+0

En realidad, hay un problema debido a un error de Android, consulte http://uihacker.blogspot.it/2011/01/android-touchmove-event-bug.html y http : //code.google.com/p/android/issues/detail? id = 5491. Básicamente, debe llamar a event.preventDefault() en la devolución de llamada touchmove, luego ajustar las cosas para eliminar correctamente el controlador de eventos – abidibo