2010-08-27 109 views
3

我使用的是UILongPressGestureRecognizer,当我用一根手指时,它可以正常工作。当我放下这个不被识别器捕获的第二手指时,delegate不断被调用,但只有第一触摸,[recognizer numberOfTouches]始终为1UILongPressGestureRecognizer开始后的第二次触摸

如果我设置[recognizer setNumberOfTouchesRequired:2]这也正常工作,我得到[recognizer numberOfTouches] = 2当我同时躺下2根手指时。

我的结论是:在UILongPressGesture被识别并开始后,第二次触摸不会改变它。这是预期的行为?

+0

是的,这是预期的行为。控件将受到您在启动前指定的触摸量的限制。 – MrShoot 2012-04-17 19:07:59

回答

0

您可以添加两种不同UILongPressGestureRecognizers,一个设置了numberOfTouchesRequired = 1,和一个= 2 你也可能想在一个只有预计,1个手指是否能识别另一个(万一用户发生故障用一根手指敲击,并在放下另一根手指后立即敲击)。

这将是这样的:

UILongPressGestureRecognizer *oneFingerLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerLongPressed:)]; 
oneFingerLongPressGesture.numberOfTouchesRequired = 1; 

UILongPressGestureRecognizer *twoFingersLongPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersLongPressed:)]; 
twoFingersLongPressGesture.numberOfTouchesRequired = 2; 

[oneFingerLongPressGesture requireGestureRecognizerToFail:twoFingersLongPressGesture]; 

UIView *someView; 

[someView addGestureRecognizer:oneFingerLongPressGesture]; 
[someView addGestureRecognizer:twoFingersLongPressGesture]; 

[oneFingerLongPressGesture release]; 
[twoFingersLongPressGesture release];