2016-08-05 198 views
0

我想要實現的只是在用戶開始手勢的地方和他結束這一點之間畫出一條線。我認爲UIGestureRecognizerStateEnded是我需要的狀態,但它被多次調用。如果有人能解釋我爲什麼會發生這種情況,以及如何抓住最後一點,我會很感激。爲什麼UIPanGestureRecognizer會多次觸發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 X [2518:356899] ??? 2016-08-05 17:14:46.153 X [2518:356899] ??? 2016-08-05 17:14:46.177 X [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.246 X [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 != UIGestureRecognizerStateEnded將成功地評估除UIGestureRecognizerStateEnded每種類型的手勢狀態。

更改!===它會正常工作。

+0

非常感謝你! – AOY

+1

np,你被邀請甚至在[聊天]中閒逛(http://chat.stackoverflow.com/rooms/26424/iosandroidchaosoverflow)。很好的地方得到幫助,並與其他開發者一起閒逛 – Shubhank

相關問題