点击/触摸不适用于Samsung Android 4.4.4和5

时间:2015-06-19 03:15:23

标签: android cordova ontouchevent touch-event

我使用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的新版本才有这个问题。

1 个答案:

答案 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毫秒可能会因您的具体情况而过多,但您可以相应更改。

希望这有帮助!