最後のタッチ位置とそのタイムスタンプの参照を保持する必要があります。あなたの速度基準のいくつかの種類を与える必要があり
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
last_timestamp = CFAbsoluteTimeGetCurrent();
UITouch *aTouch = [touches anyObject];
last_position = [aTouch locationInView: self];
}
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
double current_time = CFAbsoluteTimeGetCurrent();
double elapsed_time = current_time - last_timestamp;
last_timestamp = current_time;
UITouch *aTouch = [touches anyObject];
CGPoint location = [aTouch locationInView:self.superview];
CGFloat dx = location.x - last_position.x;
CGFloat dy = location.y - last_position.y;
CGFloat path_travelled = sqrt(dx*dx+dy*dy);
CGFloat sime_kind_of_velocity = path_travelled/elapsed_time;
NSLog (@"v=%.2f", sime_kind_of_velocity);
last_position = location;
}
この:
double last_timestamp;
CGPoint last_position;
次に、あなたのような何かを行うことができます。
私はそれがtouhcesMovedとNSTimerを使って計算すると信じています。私は一度試しましたが、良い結果を達成するのは非常に難しいです。しかし、私はこれが行く方法だと思う。 –