2012-06-12 2 views
4

Я работаю с слайд-шоу на основе сенсорного для IPad с использованием инструментов Jquery SCROLLABLEJQuery инструменты прокручивать сенсорный триггер

http://jquerytools.org/demos/scrollable/vertical.html

Он прекрасно работает и делает все, что я хочу, но если мой палец ВЕЗДЕ на слайдер и перемещается каждый так немного, что приводит к тому, что ползунок изменяет ползунки, есть ли способ изменить то, что вам нужно, чтобы перетащить палец, чтобы изменить слайд, или задайте конкретные области, в которых вы можете прокручивать слайд?

ответ

4

Вы отключить сенсорные события на «конструктор» для объекта, например:

  root = $('#content').scrollable({ 
       keyboard:false, 
       mousewheel: false, 
       touch: false 
      }); 
2

мне нужно было сделать что-то подобное, где прокрутка была слишком чувствительной на IPad. Вот что я изменил, чтобы сделать его менее чувствительным для горизонтального Swiping:

// touch event 
if (conf.touch) { 
    var touch = {}; 

    itemWrap[0].ontouchstart = function(e) { 
     var t = e.touches[0]; 
     touch.x = t.clientX; 
     touch.y = t.clientY; 
    }; 

    itemWrap[0].ontouchmove = function(e) { 

     // only deal with one finger 
     if (e.touches.length == 1 && !itemWrap.is(":animated")) {   
      var t = e.touches[0], 
       deltaX = touch.x - t.clientX, 
       deltaY = touch.y - t.clientY; 
      self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev']();     
      e.preventDefault(); 
     } 
    }; 
} 

становится

// touch event 
if (conf.touch) { 
    var touch = {}; 

    itemWrap[0].ontouchstart = function(e) { 
     var t = e.touches[0]; 
     touch.x = t.clientX; 
     touch.y = t.clientY; 
    }; 

    itemWrap[0].ontouchmove = function(e) { 

     // only deal with one finger 
     if (e.touches.length == 1 && !itemWrap.is(":animated")) {   
      var t = e.touches[0], 
       deltaX = touch.x - t.clientX, 
       deltaY = touch.y - t.clientY; 
      if(deltaX > 200 || deltaX < -200) { // new line 
       self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev']();  
      } // new line 
      e.preventDefault(); 
     } 
    }; 
} 

Отрегулировать 200 будет, однако далеко вы хотите людей, чтобы перетащить их палец, прежде чем перейти к следующему горка. Точно так же, если вы хотите контролировать вертикальное изменение скроллера DeltaX в новом коде deltaY:

if(deltaY > 200 || deltaY < -200) { // new line 
    self[vertical && deltaY > 0 || !vertical && deltaX > 0 ? 'next' : 'prev']();  
} // new line 

Если вы работаете с свернутой версией JQuery Tools вы можете использовать этот код:

// horizontal change 
if(h > 200 || h < -200) { 
    b[j && d > 0 || !j && h > 0 ? "next" : "prev"](); 
} 

// vertical change 
if(d > 200 || d < -200) { 
    b[j && d > 0 || !j && h > 0 ? "next" : "prev"](); 
} 
Смежные вопросы