2011-09-27 50 views
3

以下消息是從文檔:關於從UITapGestureRecognizer

儘管抽頭是離散的手勢,它們是分立的手勢識別的每個狀態;因此相關聯的動作消息在手勢開始時發送並針對每個中間狀態發送,直到(並且包括)手勢的結束狀態。

上面的內容似乎表明發送了多條消息。該消息將包括「開始」消息和「結束」消息。但不知何故,我只是得到「手勢結束」的消息。有什麼辦法可以同時獲得點擊開始和結束消息嗎? (我想跟蹤的是 - 「開始」:用戶觸摸屏幕的那一刻,「結束」:用戶將手指從屏幕上擡起的那一刻。)

希望有人可以在此知道幫助...

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITapGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/cl/UITapGestureRecognizer

+0

我也被文檔弄糊塗了,它繼續說'處理輕擊手勢的代碼應該測試手勢的狀態,並列出代碼來測試'UIGestureRecognizerStateEnded'狀態。所有這些似乎表明輕擊手勢識別器將發送的不僅僅是已結束的事件。 – cod3monk3y

回答

4
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

     NSDate *date1 = [NSDate date]; //user touches the screen 


} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 

     NSDate *date2 = [NSDate date]; //user lifts his finger away from the screen 

} 
+1

'UIGestureRecognizerSubclass.h頭文件包含一個類擴展,它聲明瞭僅由UIGestureRecognizer的子類調用或覆蓋的方法。 '這個方法不會被髮送給委託人。它們只能被覆蓋。 – Nekto

+0

謝謝,我會嘗試... – Stanley

+0

這將無法正常工作... – Nekto

1

你爲什麼不使用- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event方法?

+0

感謝您的協助...... – Stanley

+0

UIGestureRecognizerSubclass.h頭文件包含一個類擴展,該類擴展聲明僅打算調用或覆蓋的方法通過UIGestureRecognizer的子類。 '這個方法不會被髮送給委託人。它們只能被覆蓋。 – Nekto

11

UITapGestureRecognizer僅火災時,手勢狀態是UIGestureRecognizerStateEnded

如果你想使用手勢識別器來檢測記者的開始和結束,使用UILongPressGestureRecognizer,與minumumPressDuration設置爲0

+0

謝謝!猜猜這可能是最好的答案。只是我已經實施並測試了早期的建議。它似乎也起作用。但是你的解決方案更加優雅。感謝您的協助...... – Stanley