安卓拖动事件不适用于带有离子的4.4.2

时间:2014-08-12 16:49:53

标签: javascript android angularjs ionic-framework

我一直在AngularJS中实现一个Ionic应用程序。

我有一个'卡'列表,一个在另一个上面以垂直方式。用户可以滚动查看更多卡片,或从屏幕上滑动。这在IOS上很好(在5c和4上测试),但在HTC One M8(Android)上有一个错误,它不允许用户滑动/拖动元素。

我在这里记录了这个错误:

https://github.com/driftyco/ionic/issues/1129http://uihacker.blogspot.tw/2011/01/android-touchmove-event-bug.html

然而,当我尝试实现后一个链接中提供的解决方案时,我的应用程序崩溃了。

我的手势处理事件:

var self = this;

  ionic.onGesture('dragstart', function(e) {
    window.requestAnimationFrame(function() {
      self._doDragStart(e)
    });

  }, this.elemToDrag);

  ionic.onGesture('drag', function(e) {
    window.requestAnimationFrame(function() { 
      self._doDrag(e)
    });
  }, this.elemToDrag);

  ionic.onGesture('dragend', function(e) {
    window.requestAnimationFrame(function() { 
    self._doDragEnd(e); 
  });
  }, this.elemToDrag);
},

_doDragStart: function(e) {
},

_doDrag: function(e) {
    //handle dragging
},

_doDragEnd: function(e) {
  this.transitionOut(e);
}

我尝试将e.preventDefault()添加到事件中,但它似乎什么都不做。非常感谢任何帮助,谢谢

2 个答案:

答案 0 :(得分:1)

您可以尝试复制相同的代码,但使用touchstarttouchmovetouchend作为您的事件,正如您在错误链接中提到的那样,阻止了touchstart { {1}}。

备选方案是使用preventDefault()mousedownmousemove复制它,但在IOS中检测设备会带来不良副作用。

我的意思是你在有效的设备中使用IONIC方式,并手动复制IONIC以外的行为。我一直在检查,似乎还没有解决方法。

答案 1 :(得分:0)

当我开始使用iScroll-probe接管滚动时,这开始在Android上运行。我还使用转换来滚动而不是本机滚动。

希望这有帮助