4

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

如果我设置它也可以正常工作,当我同时放下 2 个手指时[recognizer setNumberOfTouchesRequired:2],我得到= 2。[recognizer numberOfTouches]

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

4

1 回答 1

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];
于 2012-06-01T20:17:07.290 回答