gpt4 book ai didi

iphone - 在自定义 UIGestureRecognizer 中实现速度

转载 作者:行者123 更新时间:2023-12-03 20:43:14 26 4
gpt4 key购买 nike

我编写了一个自定义 UIGestureRecognizer,它可以用一根手指处理旋转。它的设计工作方式与 Apple 的 UIRotationGestureRecognizer 完全相同,并返回相同的值。

现在,我想实现速度,但我无法弄清楚 Apple 如何定义和计算手势识别器的速度。有谁知道 Apple 如何在 UIRotationGestureRecognizer 中实现此功能?

最佳答案

您必须保留上次触摸位置及其时间戳的引用。

double last_timestamp;
CGPoint last_position;

然后你可以这样做:

-(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;
}

这应该为您提供某种速度引用。

关于iphone - 在自定义 UIGestureRecognizer 中实现速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com