use the touchstart event as touchend is too late to prevent default