2012-03-12 1 views
0

У меня есть кнопка с UIPanGestureRecognizer. Я хочу определить направление пальца следующим образом:Существует ли какой-либо метод, который я могу вызвать до вызова метода gesturerecognizer?

if (sqrt(translation.x * translation.x)/sqrt(translation.y * translation.y) < 1) 
    { 
     isHorizontalScroll = YES; 

    } 
    else 
    { 
     isHorizontalScroll = NO; 
    } 

до того, как будет распознан метод распознавания.

Кто-нибудь знает решение?

ответ

1

Использование touchesbegan, touchesmoved, touchesEnd

1

Хм, это звучит, как вы должны делать этот чек в жест распознаватель, когда жест находится в состоянии UIGestureRecognizerStateBegan. Например:

- (void)handlePan:(UIGestureRecognizer *)sender { 

    CGPoint translation = [(UIPanGestureRecognizer*)sender translationInView:self.view];  

    switch (sender.state) { 

     case UIGestureRecognizerStateBegan: 

      if (sqrt(translation.x * translation.x)/sqrt(translation.y * translation.y) < 1) 
       isHorizontalScroll = YES; 
      else 
       isHorizontalScroll = NO; 

      break; 

     case UIGestureRecognizerStateChanged: 

      ... 
+0

Проблема заключается в том, что я должен знать направление перед handlePan будет называться – Radislav

1

Фактически конкретная реализация зависит от вас. Для этого у вас есть как минимум 3 рычага:

  1. Использование распознавателей жеста.
  2. методы
  3. переописать UIResponder в:

    – touchesBegan:withEvent: 
    
    – touchesMoved:withEvent: 
    
    – touchesEnded:withEvent: 
    
  4. метод переописать UIWindow в:

    – (void)sendEvent:(UIEvent *)event