2016-08-05 29 views
0

私が達成したいのは、ユーザーがジェスチャーを開始したポイントと、これをやめたポイントの間に線を引くことです。私はUIGestureRecognizerStateEndedが必要な状態だと思っていますが、複数回呼び出されています。誰が私になぜこのようなことが起こっているのか、そして最後の点を捉える方法を説明できるのであれば、本当に感謝しています。なぜUIPestGetureRecognizerはUIGestureRecognizerStateEndedを使って何度も起動しますか?

- (void)drawingViewDidPan:(UIPanGestureRecognizer*)sender 
{ 
CGPoint currentDraggingPosition = [sender locationInView:_drawingView]; 

if(sender.state == UIGestureRecognizerStateBegan){ 
    _prevDraggingPosition = currentDraggingPosition; 
    NSLog(@"---"); 
} 

if(sender.state != UIGestureRecognizerStateEnded){ 
    [self drawLine:_prevDraggingPosition to:currentDraggingPosition]; 
    NSLog(@"???"); 
} 
_prevDraggingPosition = currentDraggingPosition; 
} 

ログ:

2016年8月5日17:14:46.0​​86 X [2518:356899] --- 2016年8月5日17:14:46.0​​92 X [2518。 356899] 2016-08-05 17:14:46.127×[2518:356899] 2016-08-05 17:14:46.153 X [2518:356899] 2016-08-05 17:14:46.177×[2518:356899] 2016-08-05 17:14:46.205 X [2518:356899] 2016-08-05 17:14:46.226 X [2518:356899] 2016-08-05 17:14:46.246X [2518:356899] 2016-08-05 17:14:46.279 X [2518:356899] ...

+1

あなたのログ出力は何ですか、それは複数回発射しているかどうかを明確にするはずです。現在、それは確かではありません。 – Shubhank

+0

質問を更新しました – AOY

+0

わかりません。たぶん私は間違ったジェスチャ認識機能を使用しています – AOY

答えて

1
if(sender.state != UIGestureRecognizerStateEnded){ 
    [self drawLine:_prevDraggingPosition to:currentDraggingPosition]; 
    NSLog(@"???"); 
} 

sender.state != UIGestureRecognizerStateEndedUIGestureRecognizerStateEnded 1を除くジェスチャー状態の種類ごとに、正常に評価されます。

!=から==に変更すると正常に動作します。

+0

ありがとうございました! – AOY

+1

np、[チャット](http://chat.stackoverflow.com/rooms/26424/iosandroidchaosoverflow)でハングアップすることさえできます。助けを得て他の開発者とハングアップするのに最適な場所 – Shubhank

関連する問題