UITouch touchesMoved Finger Direction and Speed

ios, iphone, uitouch

Solution

Direction will be determined from the values of "location" and "prevLocation" in touchesMoved. Specifically, location will contain the new point of the touch. For example:

if (location.x - prevLocation.x > 0) {
    //finger touch went right
} else {
    //finger touch went left
}
if (location.y - prevLocation.y > 0) {
    //finger touch went upwards
} else {
    //finger touch went downwards
}

Now touchesMoved will get called many times for a given finger movement. It will be key to your code to compare an initial value when the finger first touches the screen, with a value of the CGPoint when the movement is finally complete.

Problem

How can I get Speed and Direction of finger movements in touchmoved function? I want to get the finger speed and finger direction and apply it in a UIView class direction movement and animation speed. I read this link but I can not understand the answer, in addition it is not explaining how I can detect the direction: UITouch movement speed detection so far, I tried this code: ``` -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *anyTouch = [touches anyObject]; CGPoint touchLocation = [anyTouch locationInView:self.view]; //NSLog(@"touch %f", touchLocation.x); player.center = touchLocation; [player setNeedsDisplay]; self.previousTimestamp = event.timestamp; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint location = [touch locationInView:self.view]; CGPoint prevLocation = [touch previousLocationInView:self.view]; CGFloat distanceFromPrevious = [self distanceBetweenPoints:location :prevLocation]; NSTimeInterval timeSincePrevious = event.timestamp - previousTimestamp; NSLog(@"diff time %f", timeSincePrevious); } ```

Original source

Related problems