2015-04-23 32 views
1

我有一个大致的touchesBegan在我的ViewController的touchesBegan取消UISwipeGestureRecognizer

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"--[%s:%d]",__PRETTY_FUNCTION__,__LINE__); 
} 

这似乎取消UISwipeGestureRecognizer。 (未解雇)

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
    UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
     [swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [swipeRight setDirection:UISwipeGestureRecognizerDirectionRight]; 
    swipeRight.numberOfTouchesRequired=1; 

    swipeLeft.cancelsTouchesInView=NO; 
    swipeRight.cancelsTouchesInView=NO; 
swipeLeft.delaysTouchesBegan = YES; 
    swipeRight.delaysTouchesBegan = YES; 

    self.viewSwipe.userInteractionEnabled=YES; 
    [self.viewSwipe addGestureRecognizer:swipeLeft]; 
    [self.viewSwipe addGestureRecognizer:swipeRight]; 

任何想法? :)

回答

0

touchesBegan::在任何手势识别器之前被调用,并且确实会覆盖它们。

如果您希望同时支持在相同视图上轻击和轻扫,可以使用UITapGestureRecognizer并调用requireGestureRecognizerToFail。

所以,以下内容添加到您的代码示例的底部:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] init]; 
tapRecognizer.numberOfTapsRequired = 1; 
[tapRecognizer requireGestureRecognizerToFail swipeLeft]; 
[tapRecognizer requireGestureRecognizerToFail swipeRight];