1

UIGestureRecognizerスワイプアップを適切に検出する次のものがあります

- (void) addGestureRecognizer {
    _swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [_swipeRecognizer setDirection:UISwipeGestureRecognizerDirectionUp];
    [_swipeRecognizer setDelegate:self];
    [self.view addGestureRecognizer:_swipeRecognizer];
}

- (void) didSwipe:(id)sender{
    NSLog(@"didSwipe");
}

次に、左右を含むように方向を変更しました

[_swipeRecognizer setDirection:UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight];

また、上にスワイプしても反応しなくなります (左または右にスワイプすると機能します)。私は何を間違っていますか?(シミュレーター、iphone5、ipad3で試しました)

: スワイプの実際の方向を検出する必要はありません。スワイプがあることを知りたいだけです。ありがとう。

4

2 に答える 2

1

この方法を試してください

    UISwipeGestureRecognizer *_swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [_swipeRecognizer setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight];
    [_swipeRecognizer setDelegate:self];
    [self.view addGestureRecognizer:_swipeRecognizer];

    _swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [_swipeRecognizer setDirection:UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown];
    [_swipeRecognizer setDelegate:self];
    [self.view addGestureRecognizer:_swipeRecognizer];

編集

@ LearnCocos2Dが示唆したように、 「明らかに、各UISwipeGestureRecognizerは、指定された方向のスワイプのみを検出できます。方向フラグをORで結合できたとしても、UISwipeGestureRecognizerは追加のフラグを無視します。

そして、あなたの「スワイプの実際の方向を検出する必要はありません。スワイプがあることを知っている必要があります。」のように、方向ではなくスワイプを検出する必要があるので、左右を1つに組み合わせます。 -他のジェスチャーが機能するようにダウンします。

于 2013-03-20T04:24:19.417 に答える
0

swipeGestureは目立たないジェスチャであり、上下にスワイプすることは2つの異なるジェスチャです。4つのジェスチャを作成し、それを1つのアクションに送信する必要があります。

- (void) addGestureRecognizer {
    UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
    [swipeLeft setDelegate:self];
    [self.view addGestureRecognizer:swipeLeft];

    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
    [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
    [swipeRight setDelegate:self];
    [self.view addGestureRecognizer:swipeRight];

}

- (void) didSwipe:(UISwipeGestureRecognizer *)sender{
    NSLog(@"didSwipe");
}
于 2013-03-20T04:23:48.980 に答える