2011-12-06 38 views
10

我怎樣才能知道手指何時關閉以及手指何時關閉UITapGestureRecognizer
documentation說我應該只處理UIGestureRecognizerStateEnded作爲水龍頭,所以這意味着有UIGestureRecognizerStateBegin當手指停下來,但我得到的只是UIGestureRecognizerStateEnded
我使用登記識別器中的代碼是:檢測手指向上/向下UITapGestureRecognizer

[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)] 
+0

如果你有同樣的問題,看看這個鏈接,這是一個美女:[guides.codepath.com](https://guides.codepath.com/ios/Using-Gesture-Recognizers#programmatically-add -and-配置-A-姿勢的識別器) – MoVod

回答

18

UITapGestureRecognizer是離散手勢識別,並因此從未轉換到開始或改變了狀態。從UIGestureRecognizer類參考:從可能要麼認可 (UIGestureRecognizerStateRecognized)

離散手勢過渡或失敗 (UIGestureRecognizerStateFailed),這取決於它們是否成功 解譯手勢或沒有。如果手勢識別器 轉換爲識別,它將其操作消息發送到其目標。

(當然記得UIGestureRecognizerStateRecognized == UIGestureRecognizerStateEnded)。

該文檔是說你應該檢查一下水龍頭手勢識別器的狀態,看看它處於其結束狀態,然後再啓動你的代碼以表明它已被識別。他們並不是說輕拍姿勢實際上轉變爲開始或改變的狀態(儘管我承認文檔在使用的語言中有點誤導性)。

如果你想檢查一個點擊手勢識別器的手指按下事件,我會建議只使用touchesBegan:withEvent:,因爲這是你真正的反正。

1

您可以覆蓋委託方法-(BOOL)gestureRecognizer:shouldReceiveTouch:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    NSLog(@"Hello from press down"); 

    return YES; 
}