2012-03-20 53 views
7

Pracuję nad zdarzeniami dotyku na wielu platformach. (przesuwając itp.) Działają na urządzeniach z Androidem, ale na iPadzie zdarzenie touchstart jest uruchamiane dwukrotnie.iPad touchstart wypalanie dwa razy

this.element.addEventListener('touchstart', mousedown, false); 

var mousedown = function(event) { 
    // Finger Press 
    event.preventDefault(); 
    _this.inGesture = true; 
    _this._originalX = (event.touches) ? event.touches[0].pageX : event.pageX; 
    _this._originalY = (event.touches) ? event.touches[0].pageY : event.pageY; 

}; 

Ta funkcja uruchamia się dwa razy na iPadzie, ale działa poprawnie na Androidzie.

Powinienem dodać, że wystrzeliwuje touchstart, a następnie touchmove, a następnie touchend i na końcu robi kolejny touchstart z jakiegoś powodu.

Oto ona na JSFiddle: http://jsfiddle.net/6Lb3Z/1

Zrzut ekranu: http://i.imgur.com/GS8uI.png

+1

Właśnie przetestowałem na moim iPadzie i odpala raz - http://jsfiddle.net/Kai/N7NA5/ – Kai

+0

OK, dzięki, problem musi być gdzieś indziej. Tutaj jest na JSFiddle: http://jsfiddle.net/6Lb3Z/ – Jasard

+0

Zaktualizowałem skrzypce, aby działał poprawnie na jsfiddle; Nadal widzę tylko jedno połączenie typu touchstart: http://www.jsfiddle.net/6Lb3Z/1/ Używam iPada2 z iOS 5.1. Zrzut ekranu http://i.imgur.com/Oz5z4.png – Kai

Odpowiedz

0

Jeśli używasz biblioteki takich jak jQuery czy Zepto, a następnie można użyć metody .one.

Z API documentation jQuery:

Dołącz do obsługi zdarzenia dla elementów. Przewodnik jest wykonywany co najwyżej jeden element na jeden element.

+3

Czy to nie raz - zamiast raz na dotyk? –

Powiązane problemy