Ist es das? Du musst nicht alle Zwischenstationen vergleichen, sondern einfach die Geste als ungültig werten, sobald die horizontale Abweichung groß ist. Also in touchmove prüfen.
Prinzipiell reicht mir das, ja - allerdings kann ich bei einem return false bzw. preventDefault() eben nicht unterscheiden, ob der Benutzer nicht wirklich eine andere geste machen wollte. Auch Multitouch-Gesten werden nicht erfasst, bei der man einen Punkt festhält und den anderen herumzieht, weil ich ja eben nur [0] auswerte, die anderen touches aber ignoriere.
Ich denke, das ist der Weg, den du gehen muss, und letztlich der einfachste verglichen mit irgendwelchen generischen Bibliotheken.
Ja, es funktioniert auch :) zudem ist das ohnehin ein Feature, das nur einem "eingeschränkten Benutzerkreis" zur Verfügung steht.