UILongPressGestureRecognizer开始后的第二次触摸

时间:2010-08-27 14:11:31

标签: iphone ipad ios uigesturerecognizer

我正在使用UILongPressGestureRecognizer,当我用一根手指时,它正常工作。当我放下第二根手指时,识别器不会捕捉到它,delegate会一直被调用,但只有第一次触摸时,[recognizer numberOfTouches]始终为1。

如果我设置[recognizer setNumberOfTouchesRequired:2]它也能正常工作,当我同时放下两根手指时,我会[recognizer numberOfTouches] = 2。

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

1 个答案:

答案 0 :(得分:0)

您可以添加两个不同的UILongPressGestureRecognizer,一个设置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];