我使用Cordova开发了一个应用程序,在Android 5.0之前运行良好。该应用程序的问题是我可以滑动,但我无法点击/触摸我的应用程序中的特定元素(实际上,如果我点击多次,它的工作原理)。有些水龙头像按钮一样工作。然而,其他元素,如图像等,它不起作用(我在旋转木马中的图像,当点击执行功能时)
任何人都可以帮助解决为什么会发生这种情况,并且仅在Android 4.4.4及更高版本上发生。
我的代码在
下面nova.touch.bindClick = function(selector, func) {
if (nova.application.isTouchable === false) {
$(selector).click(function(e) {
func.call(this, e);
});
return;
}
var isMoving = false;
var startTime = null;
$(selector).bind(this.eventNames.touchstart, function(e) {
isMoving = false;
startTime = new Date();
$(this).addClass("touching");
});
$(selector).bind(this.eventNames.touchmove, function(e) {
isMoving = true;
});
$(selector).bind(this.eventNames.touchend, function(e) {
var $me = $(this);
$me.removeClass("touching");
var duration = new Date() - startTime;
if (!isMoving && duration < 1000) {
$me.addClass("clicking");
func.call(this, e);
setTimeout(function() {
$me.removeClass("clicking");
}, 500);
}
});
};
如上所述,这适用于旧版Android和所有版本的iOS。只有Android的新版本才有这个问题。
答案 0 :(得分:2)
今天下午我遇到了同样的问题。我发现这个Android版本的三星设备太快了,无法通过常规触摸/“点击”事件对“触摸移动”事件进行分类。
我发现以下修复解决了这个问题。
更改:
$(selector).bind(this.eventNames.touchmove, function(e) {
isMoving = true;
});
要:
$(selector).bind(this.eventNames.touchmove, function (e) {
var duration = Date.now() - startTime;
if (!isMoving && duration > 1000) {
isMoving = true;
}
});
1000毫秒可能会因您的具体情况而过多,但您可以相应更改。
希望这有帮助!