2013-02-21 3 views
2

iOS의 jQuery 터치 이벤트에 문제가 있습니다. 여기 jQuery 터치 이벤트 iOS가 작동하지 않습니다.

내가 무슨 짓을했는지 있습니다 :

$(document).ready(function(){ 
     var iX = 0,iY = 0,fX = 0,fY = 0; 

     document.addEventListener('touchstart', function(e) { 

      var touch = e.touches[0]; 
      iX = touch.pageX; 
      iY = touch.pageY; 

     }, false); 

     document.addEventListener('touchmove', function(e) { 

      var touch = e.touches[0]; 
      fX = touch.pageX; 
      fY = touch.pageY; 

     }, false); 

     document.addEventListener('touchcancel', function() { 

      var dX = fX - iX; 
      var dY = fY - iY; 

      var tg = dY/dX; 
      if(tg < 0) tg = -tg; 

      if(tg <= 0.5 && fX > iX) rightSwipe() 
      else if(tg <= 0.5 && fX < iX) leftSwipe() 

     }, false); 

     function rightSwipe(){ 
      $("#body").removeClass("bg2"); 
      $("#body").addClass("bg"); 
     } 

     function leftSwipe(){ 
      $("#body").removeClass("bg"); 
      $("#body").addClass("bg2"); 
     } 
}); 

화면에 손가락을 터치는 손가락의 위치를 ​​저장합니다. 손가락을 움직여 놓으면 마지막 손가락 위치가 저장됩니다. 간단한 형상으로 스 와이프 한 방향을 발견합니다.

이 스크립트는 Android 4.1.2에서 Google 크롬과 Android 기본 브라우저를 사용하여 매우 잘 작동합니다. Safari를 사용하여 iOS에서 시험해 볼 때 작동하지 않습니다.

누군가가 도움을받을 수 있습니까?

답변

3

iPad의 모바일 사파리에서 touchcancel 이벤트를 보지 못했습니다. 대신 touchend을 사용해 보셨습니까? 아마도 이것은 :

function upHandler(event) { 

    var dX = fX - iX; 
    var dY = fY - iY; 

    var tg = dY/dX; 
    if (tg < 0) tg = -tg; 

    if (tg <= 0.5 && fX > iX) rightSwipe() 
    else if (tg <= 0.5 && fX < iX) leftSwipe() 
} 

document.addEventListener('touchcancel', upHandler, false); 
document.addEventListener('touchend', upHandler, false); 

당신이 jQuery를 사용하는 경우, 당신은이를 대체 할 수

$(document).on('touchcancel, touchend', upHandler); 
+0

Nop는 :와

document.addEventListener('touchcancel', upHandler, false); document.addEventListener('touchend', upHandler, false); 

합니다. 나는 테스트했고 터치 시작과 터치 이동이 모두 작동합니다. 그러나 touchcancel과 touchend는 작동하지 않습니다. –

+0

jQuery를 사용하지 않았다. 내 대답을 업데이트 할게. jQuery를 사용할 때'on' 등으로 좋은 일을 할 수 있습니다. – Cymen

+0

감사합니다. 그것은 작동합니다! 이벤트 리스너 + jquery를 사용하여 예제를 만들 수 있습니까? –

관련 문제