2012-03-12 22 views
0

私はボタンwhith UIPanGestureRecognizerを持っています。私はこのような指の方向を決定したいと思います:ジェスチャー認識プログラムのメソッドが呼び出される前に呼び出せるメソッドはありますか?

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

    } 
    else 
    { 
     isHorizontalScroll = NO; 
    } 

認識者のメソッドが呼び出される前に。

解決策を知っている人はいますか?ジェスチャがUIGestureRecognizerStateBegan状態にあるときに、ジェスチャー認識でそのチェックを行うべきであるように

答えて

1

使用touchesbegan、touchesmoved、touchesEnd

1

うーん、それが聞こえます。例:

- (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. 再実装UIResponderのメソッド:

    – touchesBegan:withEvent: 
    
    – touchesMoved:withEvent: 
    
    – touchesEnded:withEvent: 
    
  3. 再実装UIWindowの方法:

    – (void)sendEvent:(UIEvent *)event 
    
関連する問題