【问题标题】:Android drag event not working on 4.4.2 with ionicAndroid 拖动事件无法在 4.4.2 上使用 ionic
【发布时间】:2014-08-12 16:49:52
【问题描述】:

我一直在用 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() 添加到事件中,但它似乎什么也没做。任何帮助将不胜感激,谢谢

【问题讨论】:

  • 能发一下这个对应的dom吗?

标签: javascript android angularjs ionic-framework


【解决方案1】:

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

替代方法是使用mousedownmousemovemouseup 复制它,但在 IOS 中检测设备会带来不良副作用。

我的意思是您在可以工作的设备中使用 IONIC 方式,并为那些不工作的设备手动复制 IONIC 之外的行为。查了一下,好像还没有解决办法。

【讨论】:

  • 感谢您的努力我会试一试,如果有任何工作,我会将其标记为正确,必须做其他事情并有十分钟的时间来给予赏金!不要一下子花光
【解决方案2】:

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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2018-09-30
    • 2014-08-11
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多