相关疑难解决方法(0)

如何确定平移手势的真实结束速度?

当使用UIPanGestureRecognizer和检测时UIGestureRecognizerStateEnded,手势的速度不是真正的速度.相反,它是我之前调用我的动作方法的旧速度.如何在手势结束时访问真实速度?

我创建了UIPanGestureRecognizer这样的:

    UIPanGestureRecognizer* panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];
    [panGestureRecognizer setMaximumNumberOfTouches:2];
    [panGestureRecognizer setMinimumNumberOfTouches:1];
    [panGestureRecognizer setDelegate:self];
    [panGestureRecognizer setDelaysTouchesBegan:NO];
    [panGestureRecognizer setDelaysTouchesEnded:NO];
    [panGestureRecognizer setCancelsTouchesInView:NO];
    [self addGestureRecognizer:panGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

我的动作方法的开头是:

- (IBAction) panGestureRecognized:(UIPanGestureRecognizer *)recognizer {

    UIGestureRecognizerState state = recognizer.state;

    CGPoint gestureTranslation = [recognizer translationInView:self];
    CGPoint gestureVelocity = [recognizer velocityInView:self];

    [CBAppDelegate log:@"panGestureRecognized: state: %s\n    translation: (%f, %f)\n    velocity: (%f, %f)", [self toString:state], gestureTranslation.x, gestureTranslation.y, gestureVelocity.x, gestureVelocity.y];
Run Code Online (Sandbox Code Playgroud)

日志输出示例:

2013-09-30_10:46:32.830 panGestureRecognized: state: UIGestureRecognizerStateChanged
    translation: (-283.000000, 2.000000)
    velocity: (-43.046783, 45.551472)
2013-09-30_10:47:02.942 panGestureRecognized: state: UIGestureRecognizerStateEnded …
Run Code Online (Sandbox Code Playgroud)

iphone ios uipangesturerecognizer

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

ios ×1

iphone ×1

uipangesturerecognizer ×1