我一直在AngularJS中实现一个Ionic应用程序。
我有一个'卡'列表,一个在另一个上面以垂直方式。用户可以滚动查看更多卡片,或从屏幕上滑动。这在IOS上很好(在5c和4上测试),但在HTC One M8(Android)上有一个错误,它不允许用户滑动/拖动元素。
我在这里记录了这个错误:
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.preventDefault()添加到事件中,但它似乎什么都不做。非常感谢任何帮助,谢谢
答案 0 :(得分:1)
您可以尝试复制相同的代码,但使用touchstart
,touchmove
和touchend
作为您的事件,正如您在错误链接中提到的那样,阻止了touchstart
{ {1}}。
备选方案是使用preventDefault()
,mousedown
,mousemove
复制它,但在IOS中检测设备会带来不良副作用。
我的意思是你在有效的设备中使用IONIC方式,并手动复制IONIC以外的行为。我一直在检查,似乎还没有解决方法。
答案 1 :(得分:0)
当我开始使用iScroll-probe接管滚动时,这开始在Android上运行。我还使用转换来滚动而不是本机滚动。
希望这有帮助