2010-08-27 80 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]; 
相關問題