2014-09-23 3 views
0

Я ищу, чтобы получить данные в режиме реального времени, когда пользователь просматривает экран. Вот мой код:Получить UIPanGesture Distance Of A Swipe

-(void)initViewWithCIImage:(CIImage*) ciImage UIImage:(UIImage*)uiimage 
{ 
    _originalUIImage = uiimage; 
    _originalCIImage = ciImage; 
    CIContext *context = [CIContext contextWithOptions:nil]; 
    _currentCGImageRef = [context createCGImage:_originalCIImage fromRect:[_originalCIImage extent]]; 
    _picture.image = uiimage; 
} 

-(void)swipeRecognized:(UISwipeGestureRecognizer *)swipe 
{ 
    CGPoint startLocation; 

    if (swipe.state == UIGestureRecognizerStateBegan) 
    { 
     startLocation = [swipe locationInView:self.view]; 
    } 
    else 
    { 
     NSLog(@"start loc is %f",startLocation.x); 
     CGPoint stopLocation = [swipe locationInView:self.view]; 
     CGFloat dx = stopLocation.x - startLocation.x; 
     CGFloat dy = stopLocation.y - startLocation.y; 
     CGFloat distance = sqrt(dx*dx + dy*dy); 
     NSLog(@"Distance: %f", distance); 
    } 
} 

Когда я начинаю салфетки, я получаю действительную дистанционную точку. Тем не менее, как я по-прежнему красть я получаю расстояние бесконечно:

Вот журнал печать из моего кода:

2014-09-23 17: 06: 57,735 CameraApp [2503: 60b] startLocation.x является -0,000000

2014-09-23 17: 06: 57,738 CameraApp [2503: 60b] Расстояние: 856,214417

2014-09-23 17: 06: 57,739 CameraApp [2503: 60b] startLocation.x это - 413119666577672720342843392.000000

2014-09-23 17: 06: 57.740 CameraApp [2503: 60b] Расстояние: inf

.... повторяет последние 2 строк, как я красть

Вы можете думать о том, почему я получаю бесконечный или как я могу установить свой код на лучше, чтобы получить в режиме реального времени данных красть расстояние?

Спасибо!

+0

'startLocation' - локальная переменная. В состояниях жестов, отличных от «Начал», вы не инициализируете «startLocation». Вы должны сделать его переменной экземпляра. – rmaddy

+0

Массивный дерп! Спасибо. Положите это как ответ, и я дам вам полный кредит. Я был слишком глубоким и не обращал внимания на основы! Спасибо за свежие глаза – Aggressor

ответ

1

startLocation - локальная переменная. В состояниях жестов, отличных от «Начал», вы не инициализируете startLocation, приводя к странным значениям. Вы должны сделать его переменной экземпляра.

 Смежные вопросы

  • Нет связанных вопросов^_^