0

で異常な動作が発生していUISwipeGestureRecognizerます。最初のスワイプは正しく検出されますが、2 回目のスワイプは検出されません。次に、3番目のスワイプは正しく検出されますが、4番目はそうではありません。左用と右用の2つのスワイプジェスチャレコグナイザーがあります。コードは次のとおりです。

.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再び呼び出されます。

何か助けてください。

EDIT 1:紡績方法の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)、その後ビューが上下逆になるため、以前は左だったものが右になり、その逆も同様です。

したがって、最初に左にスワイプすると、(あなたの視点から見て) 2 回目の左スワイプは実際には右スワイプとして認識されますが、右スワイプは実際には左スワイプであり、観察した動作を説明しています。

2 回のジェスチャ (360° 回転) の後、ビューは元の向きに戻るため、3 回目のジェスチャでは認識が再び「通常」になります。

于 2012-05-17T20:08:31.877 に答える