UISwipeGestureRecognizer的异常行为

时间:2012-05-17 19:36:26

标签: iphone objective-c ios ipad

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) {

    }];
}

1 个答案:

答案 0 :(得分:1)

当你将视图旋转180°时(顺便说一下,你应该使用M_PI代替3.142),之后视图会颠倒,所以之前留下的是现在正确的,反之亦然

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

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