在iOS上与touchstart事件延迟作斗争

时间:2014-01-01 21:25:55

标签: ios touch kineticjs touchstart

在将touchstart事件绑定到KineticJS圈子对象时,我在Safari for iOS中遇到约500毫秒的延迟。我已经尝试在event.preventDefault()函数中调用on,认为这会覆盖默认的iOS行为,但它没有任何区别。我不确定这是否与KineticJS有关,这就是为什么我把它从标题中删除了(但是把它作为标签包含在内)。注意:使用iOS模拟器没有延迟 - 延迟仅发生在实际设备(iPhone 4)上。有什么想法吗?

var stage = new Kinetic.Stage({
    container: "container",
    width: $(window).width(),
    height: $(window).height(),
});

var layer = new Kinetic.Layer();

var circle = new Kinetic.Circle({
    x: stage.getWidth() / 2,
    y: stage.getHeight() / 2,
    radius: 70,
    fill: "black",
});

layer.add(circle);
stage.add(layer);

circle.on("touchstart", function() {
    this.setFill("red");
    layer.draw();
});

1 个答案:

答案 0 :(得分:0)

移动浏览器有一个约300毫秒的延迟,而浏览器则会等待单击或双击(因为双击是用于缩放)。

可以使用以下方法在最新的Android设备上删除此功能:

<meta name="viewport" content="width=device-width">

但是,Mobile Safari并没有遵循相同的逻辑,并且无法禁用此延迟。

您可以在此处详细了解:http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away