答えて

0
+0

通常のクリックイベントを破壊しませんmootools 1.2と私は1.3を使用しています。また、私は、ネイティブDragクラスに基づいて多くのコンポーネントを使用しているので、私はそのクラスの修正を好む。ありがとう! – aartiles

2

私はそれを自分で修正しました。タッチイベントにマウスイベントをマップするのと同じくらい簡単です。

だから、解決策は、&を置き換える検索することです。ここでは

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

はMooToolsはドラッグサポートタッチイベントを作るに私の解決策でした。私はClass.refactorを使用するので、この方法は、(これだけMooToolsはのv.1.3.1でテストされた)MooToolsは、より多くのファイルを編集するために私を必要としませんでした - それはまた、それはだ

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 - これが本番環境でテストされていて動作していれば、元のクラスを修正してmootoolsにプルリクエストを送信するのはどうですか?タッチデバイスははるかに広く普及しており、これはすぐに使用するのに便利です。 –

+0

素晴らしい!タッチイベントがドラッグされている間にスクロールを無効にする方法を知っていますか?私のウィンドウはドラッグすると同時にスクロールします。 – Sergio

+0

実際にはアンドロイドのバグのために問題があります。http://uihacker.blogspot.it/2011/01/android-touchmove-event-bug.htmlとhttp ://code.google.com/p/android/issues/detail?id = 5491基本的には、touchmoveコールバックでevent.preventDefault()を呼び出し、イベントハンドラを正しく削除するように調整する必要があります – abidibo

関連する問題