Я могу помочь вам с одной проблемой, но я не знаю, почему «таченд» не срабатывает, когда оба пальца покидают экран, когда я запускаю ваш код выше, «таченд» срабатывает, когда любой палец покидает экран (на айфоне 4)
1) Хотя событие JavaScript «touchend» для iPhone имеет свойство «touch», оно всегда будет пустым, когда последний палец покинет экран, потому что «touch» для iPhone представляет пальцы, которые в данный момент касаются экрана, и "touchend" запускает только после того, как палец покидает экран. Таким образом, на «touchend» «e.touches.length» всегда будет 0, когда последний палец поднят.
2) Вы можете получить доступ к тем касаниям, которые были изменены в событии "touchend", используя свойство changeTouches. Это проблематично, потому что это поведение не очень последовательное.
Если коснуться экрана одним пальцем, затем другим, а затем убрать один палец, может произойти множество вещей.
Если после удаления второго пальца ничего не изменилось в отношении первого пальца, ваш объект события в "touchend" будет иметь "touches.length = 1" (палец все еще на экране) и "changeTouches.length" = 1 "(палец, который покинул экран).
Однако, если вы перемещаете первый палец (даже немного), когда убираете второй палец, то при «прикосновении» ваш объект события будет иметь «touch.length = 1» (палец все еще на экране) и "changeTouches.length = 2" (палец, который покинул экран + движение первого пальца).
Я нашел эту статью очень полезной:
http://m14i.wordpress.com/2009/10/25/javascript-touch-and-gesture-events-iphone-and-android/