8

次のコードを使用して、コードで 1 本の指のスワイプを処理します。

UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    [swipe setDirection:UISwipeGestureRecognizerDirectionLeft];
    [swipe setDelaysTouchesBegan:YES];
    [[self view] addGestureRecognizer:swipe];

次の行を追加して、2 本の指のスワイプを処理できることを知っています。

 [swipe setNumberOfTouchesRequired:2];

ただし、上記のコードを追加すると、必要なタッチ数が 2 になったため、1 本の指のスワイプが検出されなくなりました。コードを 1 本、2 本、または 3 本の指のスワイプで機能させるにはどうすればよいですか?

次のコードを使用してみましたが、これは私がやりたいことをしません。

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    [panRecognizer setMinimumNumberOfTouches:1];
    [panRecognizer setMaximumNumberOfTouches:3];
    [panRecognizer setDelaysTouchesBegan:YES];
    [[self view] addGestureRecognizer:panRecognizer];
    [panRecognizer release];

ありがとうございました。

4

2 に答える 2

12

handleViewsSwipe で、ジェスチャー認識エンジンから numberOfTouches プロパティを取得できます。

- (void)handleViewsSwipe:(UISwipeGestureRecognizer *)recognizer {
    NSUInteger touches = recognizer.numberOfTouches;
    switch (touches) {
        case 1:
            break;
        case 2:
            break;
        case 3:
            break;
        default:
            break;
    }
}

タッチ数に応じて、同じ方法で何をするかを切り替えるだけです。

于 2012-01-29T05:22:31.657 に答える
10

ビューに3つのスワイプジェスチャレコグナイザーを追加します。

for (int i = 1; i <= 3; ++i) {
    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleViewsSwipe:)];
    swipe.numberOfTouchesRequired = i;
    swipe.direction = UISwipeGestureRecognizerDirectionLeft;
    swipe.delaysTouchesBegan = YES;
    [self.view addGestureRecognizer:swipe];
}

私のために働いた。

于 2012-01-29T06:46:11.087 に答える