Android拖放事件在4.4.2的ionic中不工作

Android drag event not working on 4.4.2 with ionic

本文关键字:ionic 工作 拖放 事件 Android      更新时间:2023-09-26

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

我有一个"卡片"列表,一张垂直地放在另一张的上面。用户可以滚动屏幕查看更多的卡片,或者将它们从屏幕上划掉。这在IOS上没问题(在5c和4上进行了测试),但在HTC One M8 (Android)上有一个bug,不允许用户滑动/拖动元素。

我在这里看到了这个bug的文档:

https://github.com/driftyco/ionic/issues/1129和http://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.p preventdefault()到事件,但它似乎什么都不做。任何帮助都将非常感激,谢谢

您可以尝试复制相同的代码,但使用touchstart, touchmovetouchend作为您的事件,正如您在bug链接中提到的那样,用preventDefault()防止touchstart

另一种选择是用mousedown, mousemove, mouseup复制它,但像在IOS中一样检测设备会带来不希望的副作用。

我的意思是你在工作的设备中使用IONIC的方式,并为那些不工作的设备手动复制IONIC之外的行为。

当我开始使用isroll -probe来接管滚动时,这开始在Android上工作。我还使用了变换来滚动,而不是原生滚动。

希望能有所帮助