2012-01-29 64 views
8

我用下面的代码来处理1个手指轻扫在我的代码:如何处理1到3个手指滑动手势在iOS的

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

我知道我可以添加以下行,使其处理2个手指轻扫:

[swipe setNumberOfTouchesRequired:2]; 

但是当我添加不再检测上面的代码1手指轻扫,因为现在需要触摸的数量是2我能做些什么使我的工作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]; 

谢谢。

回答

12

在您的handleViewsSwipe中,您可以从手势识别器获取numberOfTouches属性。

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

只需切换相同的方法做什么取决于你得到多少触摸。

+1

我添加了上面的代码,但handleViewsSwipe只在触摸为1时触发。如果我​​尝试使用2个手指或3个手指轻扫,它永远不会被调用。任何想法? – atbebtg 2012-01-29 05:42:52

+1

除了这段代码之外,您还需要做一些rob说的,并在视图中添加3个手势识别器。每个手指数量一个。所有这些都可以参考相同的方法。 – MobileOverlord 2012-01-29 13:20:23

+0

谢谢你的工作! – atbebtg 2012-01-30 03:14:43

10

添加三个轻扫手势识别到您的视图:

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]; 
} 

为我工作。

+0

你好@rob mayoff请看看我的问题http://stackoverflow.com/questions/20761686/track-touch-points-in-mutlitouch我正在努力解决这个问题。请帮助我。这是否可以使用UIPangesture Recogniser解决 – Ranjit 2013-12-29 06:24:52