2016-08-05 195 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

相关问题