Каждый раз когда вы натискаете на один .TestBlock на него навешиваются ивенты touchmove и touchend. Тоисть у вас также touchmove должен работать по правде, мне кажется вы просто не заметили.
Непонятно зачем вы вообще touchmove и touchend ивенты навешиваете при таче на елемент. Я бы посоветол вынести их из под touchstart.
$('.TestBlock').on('touchstart', function(event) {
// bla bla bla
}),false;
$('.TestBlock').on('touchmove',function(event) {
//bla bla bla
}),false;
$('.TestBlock').on('touchend',function(event) {
console.log('End');
}),false:
ну или перед каждым навешиванием ивента удалять предыдущий.
$('.TestBlock').on('touchstart', function(event) {
// bla bla bla
$(this).off('touchmove');
$(this).on('touchmove',function(event) {
//bla bla bla
}),false;
$(this).off('touchend');
$(this).on('touchend',function(event) {
console.log('End');
}),false:
}),false;
Ну или, как писали выше, заменить on на one