为什么使用iPhone中未检测到的触摸移动来向下滑动手势?

时间:2015-12-07 06:12:35

标签: jquery cordova

您好我正在使用cordova开发跨平台移动应用程序。我需要一个动作当一个div被刷下来时顶部的另一个div需要像iPhone的主屏幕中的iPhone应用程序搜索一样出现。我写了以下代码,它在我的应用程序中不起作用。

function detectswipe(el,func) {
      swipe_det = new Object();
      swipe_det.sX = 0;
      swipe_det.sY = 0;
      swipe_det.eX = 0;
      swipe_det.eY = 0;
      var min_x = 20;  //min x swipe for horizontal swipe
      var max_x = 40;  //max x difference for vertical swipe
      var min_y = 10;  //min y swipe for vertical swipe
      var max_y = 10;  //max y difference for horizontal swipe
      var direc = "";
      ele = document.getElementById(el);
      ele.addEventListener('touchstart',function(e){
        var t = e.touches[0];
        swipe_det.sX = t.screenX; 
        swipe_det.sY = t.screenY;
      },false);
      ele.addEventListener('touchmove',function(e){
        e.preventDefault();
        var t = e.touches[0];
        swipe_det.eX = t.screenX; 
        swipe_det.eY = t.screenY;
        if ((((swipe_det.eX - min_x > swipe_det.sX) || (swipe_det.eX + min_x < swipe_det.sX)) && ((swipe_det.eY < swipe_det.sY + max_y) && (swipe_det.sY > swipe_det.eY - max_y)))) {
          if(swipe_det.eX > swipe_det.sX) direc = "r";
          else direc = "l";
        }
        //vertical detection
        if ((((swipe_det.eY - min_y > swipe_det.sY) || (swipe_det.eY + min_y < swipe_det.sY)) && ((swipe_det.eX < swipe_det.sX + max_x) && (swipe_det.sX > swipe_det.eX - max_x)))) {
          if(swipe_det.eY > swipe_det.sY) {calling();}
          else direc = "u";
        }

        if (direc != "") {
          if(typeof func == 'function') func(el,direc);
        }
        direc = "";
       // alert("touchmove");

      },false);

    }

    function myfunction(el,d) {
      //alert("you swiped on element with id '"+el+"' to "+d+" direction");
      if(d == "d")
        {
         //calling();

        }
    }



    detectswipe('swipemethod',myfunction);
     function calling()
  {
        $("#mydiv").removeClass("mydiv");
          $("#swipeinner").removeClass("swipeinner");
  }

这个小提琴在我的移动浏览器click here中运行良好。但不是我在iPhone中构建的应用程序

我不知道它的原因。有人能帮我吗?提前谢谢......

1 个答案:

答案 0 :(得分:1)

对于不像jQuery mobile那样重量级的东西,请尝试使用hammer.js库。它不到4k。我使用的是JQM,但这只是为了检测滑动而引入的。

http://hammerjs.github.io