2015-07-13 102 views
3

在Interface Builder中,我添加了一個按手勢識別到的MKMapView。長按手勢識別問題

一個事件之後1秒(我使用它添加一個銷到地圖)發送。我已經檢查了我的手勢識別器的「取消觸摸視圖」行爲,但是我的問題是,一旦長按手勢被識別,如果您將手指放在屏幕上並在地圖視圖上拖動它,事件(長時間按)將連續發送的同時拖動,就好像它實際上是拖拽手勢識別,造成數十針被添加到我的地圖...

我該如何解決這個問題?

謝謝。

回答

4

按照documentation

長按手勢是連續的。當允許的手指的數量 (numberOfTouchesRequired)已經按下指定的時間段 (minimumPressDuration)並且觸摸不超過允許的移動範圍(allowableMovement)時,手勢開始 (UIGestureRecognizerStateBegan)。 手勢 只要手指移動,識別器就會轉換到更改狀態, ,並且在解除任何手指 時結束(UIGestureRecognizerStateEnded)。

隨着重點突出。

我相信你可能不會在你的手勢識別的委託方法來過濾狀態。

你需要這樣的事情: -

- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer { 
    if (recognizer.state == UIGestureRecognizerStateBegan) { 
     // do your stuff... 
    } 
} 
+0

哇!非常感謝 !我沒有想過這個! –

+1

沒問題,很高興我可以幫助:) –