Ios UISweepGestureRecognitor未响应Up

Ios UISweepGestureRecognitor未响应Up,ios,objective-c,Ios,Objective C,我有以下UIgestureRecognitor,它可以正确地检测刷卡 - (void) addGestureRecognizer { _swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)]; [_swipeRecognizer setDirection:UISwipeGestureRecognizerDirectionUp];

我有以下
UIgestureRecognitor
,它可以正确地检测刷卡

- (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上试用)


注意:我不需要检测刷卡的实际方向。我只想知道有一个刷卡。谢谢。

swippegesture是一种谨慎的手势,向上和向下滑动是两种不同的手势。 您必须创建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");
}

swippegesture是一种谨慎的手势,上下滑动是两种不同的手势。 您必须创建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");
}
这样试试

    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];
编辑

正如@LearnCos2D“显然,每个UISweepGestureRecognitor只能检测到给定方向上的滑动。即使方向标志可以一起使用,UISweepGestureRecognitor也会忽略其他标志。”

根据您的“注意事项:我不需要检测实际的滑动方向。我只需要知道有一个滑动。”,您只需要检测滑动方向,而不是方向,因此将左右组合为一个,将上下组合为另一个手势就行了。

试试这种方法

    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];
编辑

正如@LearnCos2D“显然,每个UISweepGestureRecognitor只能检测到给定方向上的滑动。即使方向标志可以一起使用,UISweepGestureRecognitor也会忽略其他标志。”


根据您的“注意事项:我不需要检测实际的滑动方向。我只需要知道有一个滑动。”,您只需要检测滑动方向,而不是方向,因此将左右组合为一个,将上下组合为另一个手势即可。

这是不正确的<代码>方向是位掩码。检查这个答案。这是不对的<代码>方向是位掩码。检查这个答案。此()的可能副本比上面的链接帖子要好。感谢这个()可能的副本比上面链接的帖子好。谢谢这个()比每个人似乎都在引用的解释要好得多。谢谢你的帮助!这()是一个比每个人似乎都在引用的更好的解释。谢谢你的帮助!