0

我遇到了一些不寻常的行为UISwipeGestureRecognizer。第一次滑动被正确检测到,但第二次滑动没有。然后正确检测到第三次滑动,但未正确检测到第四次。我有两个滑动手势识别器,一个用于左侧,一个用于右侧。这是代码:

.h 文件

- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)recognizer;

.m 文件

- (IBAction)handleSwipe:(UISwipeGestureRecognizer *)recognizer {
    if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
        NSLog(@"you swiped left");
        [self spinSunCounterClockwise];
    } else {
        NSLog(@"you swiped right");
        [self spinSunClockwise];
    }

}

因此,例如,如果我第一次向左滑动spinSunCounterClockwise,则调用,但如果我再次向左滑动spinSunClockwise则调用。

另一个例子是,如果我第一次向左滑动spinSunCounterClockwise,就会调用。如果我向右滑动spinSunCounterClockwise会再次调用。

请问有什么帮助吗?

编辑1:一种纺纱方法

-(void) spinSunCounterClockwise
{
    [UIView animateWithDuration:2.0f animations:^{
        imgSun.transform = CGAffineTransformRotate(imgSun.transform, 3.142);
    } completion:^(BOOL finished) {

    }];
}
4

1 回答 1

1

当您将视图旋转 180° 时(顺便说一句,您应该使用M_PI而不是3.142),之后视图会颠倒过来,所以之前左边的现在是右边,反之亦然。

因此,当您第一次向左滑动时,第二次向左滑动(从您的角度来看)实际上被识别为向右滑动,而向右滑动实际上是向左滑动,这解释了您观察到的行为。

在两个手势(360° 旋转)之后,您的视图再次处于其原始方向,因此第三个手势的识别再次“正常”。

于 2012-05-17T20:08:31.877 回答