2011-06-24 8 views
43

を終了し、私は、ビューを持っていると私は、このビューにUIPanGestureRecogniserを適用:検出パンジェスチャーは

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAnim:)]; 
[sliderView addGestureRecognizer:panGesture]; 
[panGesture release]; 

私はうまくジェスチャーを検出し、処理することができます。しかし、ジェスチャーが終了したら別の方法を開始したいと思います。

この種の検出を可能にする2つの方法があります。 touchesEndedtouchesCancelledしかし、タッチがジェスチャーになるとすぐにtouchesCancelledが呼び出されることがわかりました。つまり、ジェスチャーコールを保証するのに十分なほど指を動かし、touchesEndedが呼び出されることはめったにありません。

私は左右にパンして、ジェスチャーの終了時に別の関数呼び出しを開始できるようにします。これはどうすればいいですか?

答えて

114

パンジェスチャー終了イベントは、その状態をUIGestureRecognizerStateEndedで確認することで検出できます。

以下のコードを確認してください。

-(void) panAnim:(UIPanGestureRecognizer*) gestureRecognizer 
{ 
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     //All fingers are lifted. 
    } 
} 

パンジェスチャが連続している

アップルのドキュメントから。最小の指数が (minimumNumberOfTouches)の場合、 が移動していると見なされると、 が開始(UIGestureRecognizerStateBegan) になります。 少なくとも の指の数が を押している間に、 指が動いたときに、 (UIGestureRecognizerStateChanged)が変更されます。 (UIGestureRecognizerStateEnded)が終了します。 すべての指が持ち上げられます。

Read more

+0

歓声メイト!正確に私が必要なもの! –

+0

@ダニエル・ハリー:それが助けてくれることを嬉しく思う:) – Jhaliya

11

パンジェスチャー終了イベントは、以下のコードでUIGestureRecognizerStateEndedまたはUIGestureRecognizerStateCancelledまたはUIGestureRecognizerStateFailed

チェックして、それの状態を確認することによって検出することができます。

-(void) panGesture:(UIPanGestureRecognizer*) gestureRecognizer 
    { 
    if(gestureRecognizer.state == UIGestureRecognizerStateEnded || gestureRecognizer.state == UIGestureRecognizerStateFailed || gestureRecognizer.state == UIGestureRecognizerStateCancelled) 
      { 
       //code what you want. 
      } 
    } 
5

上記の回答はすべて正しいですが、これはSwiftのアップデート済みです。

スウィフト3:

func panGesture(recognizer: UIPanGestureRecognizer) { 
    if recognizer.state == .ended { 
     // Do what you want 
    } 
} 
関連する問題