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'ed 在一起,UISwipeGestureRecognizer 也会忽略其他标志。

并且根据您的“注意我不需要检测滑动的实际方向。我只需要知道有滑动。 ”,您只需要检测滑动而不是方向,因此将左右组合为一个和向上-down 作为其他手势将起作用。

于 2013-03-20T04:24:19.417 回答
0

swipeGesture 是谨慎的手势,上下滑动是两种不同的手势。您必须创建 4 个手势并将其发送到一个操作。

- (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 回答