2013-11-25 20 views
4

我使用UIGestureRecognizer atm創建一些地圖相似的程序。如何取消LongPressGesture,使PanGesture可以識別

我的工作需要我聽長按手勢和平移手勢分開,所以他們每個人都可以做他們自己的任務。 但是在一種情況下,我需要首先聽取長按才能知道選擇哪個對象。之後,當我開始移動我的手指(不擡起)時,該對象也將移動。它有點像在Google地圖中拖動標記。但是因爲我的長按識別器已經開啓,所以平移手勢識別器沒有起火,直到我再次在屏幕上顯示。

我想是這樣

recognizer.enabled = NO; 
recignizer.enabled = YES; 

但它並沒有幫助的。

所以我不知道是否有反正它取消後長按確認(UIGestureRecognizerStateBegan),所以當我開始移動時,平移手勢識別器將立即觸發。或者我必須使用UIResponder才能使其工作?

感謝您的意見。

回答

1

實際上,您可以使用UILongPressGestureRecognizer檢測長按後的平移手勢。唯一需要注意的是,由於UILongPressGestureRecognizerUIGestureRecognizer的子類,因此它沒有在UIPanGestureRecognizer中非常方便的-translationInView:

無論如何,您可以自己做這些計算,通過跟蹤長按後觸摸的位置,因爲它會繼續觸發綁定到手勢識別器的動作。

看看this question,它可能有助於計算長按手勢的翻譯。

+0

謝謝。我不知道我仍然可以用它來解釋潘。之前將allowMovement設置爲NO。不得不稍微修改代碼,所以其他函數接受UILongPress,但現在一切正常。此外,我只需要在視圖中的位置,而不是移動多少,所以它更容易。但不知道有沒有其他方法呢? – mameo