2013-08-27 16 views
5

私は物事をスワイプしようとしていました(左から下の意味)。しかし、UISwipeGestureは左、右、下、上だけを認識します。ios任意の角度で任意の方向にUISwipeGestureRecogniserを実装します。

私は全画面表示にジェスチャーを追加したいと思います。次に、ユーザーが画面上をスワイプするたびに、スワイプの開始座標と終了座標を知りたい。スワイプは任意の角度と任意の位置にある可能性があります。 iOSでスワイプの開始座標と終了座標を取得する方法はありますか

私を助けてください。私はひどく立ち往生しています。あらかじめThanx。

+0

の2点のいずれかを使用することができます。または、最善の方法はViewにメソッドを使用することです。 –

答えて

4

は今、私はこれらの手順を使用して、この実装をした: -

あなたはクラス「UIGestureRecognizer」を拡張した後、いくつかのデリゲートメソッドを実装することができます。

ここにその方法があります。

//それはそれはそれはエンドスワイプポイント

ます// regural基づいて

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint point=[touches.anyObject locationInView:self.view]; 
} 

をタッチポイントを与えるタッチ

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
CGPoint startSwipePoint= [touches.anyObject locationInView:self.view]; 
} 

//の出発点を与えます

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint endSwipePoint= [touches.anyObject locationInView:self.view]; 
} 

//ここでは2点間の角度を計算するコードです。私は始点と終点を使用しています。しかし、あなたはあなたが座標に応じて、方向性を得ることができ、そこからパンジェスチャーの代わりに、あなたが開始することができますスワイプとエンドポイントを使用することができますあなたの条件に応じて

CGFloat angle=atan2(startSwipePoint.y -endSwipePoint.y,endSwipePoint.x -  startSwipePoint.x) * Rad2Deg; 
1

まあ、1つのルートは、UIPanGestureRecognizerを使用するだけです。パンのジェスチャーは、どの方向に進むか気にせず、ビュー内の位置を追跡することができます。これらのポイントを取得する方法の例を次に示します。 How to make a combined gestures?を:あなたはスワイプジェスチャー認識装置を使用しての死者のセットをしている場合、あなたは私がここにリンクされ答えに作られたほとんど完全なdiagonalishスワイプジェスチャーサブクラスを変更することができ、

- (void)panDetected:(UIPanGestureRecognizer *)gesture 
{ 
    if (gesture.state == UIGestureRecognizerStateBegan) { 
     CGPoint startingPoint = [gesture locationInView:gesture.view]; 
    }else if (gesture.state == UIGestureRecognizerStateEnded) { 
     CGPoint endPoint = [gesture locationInView:gesture.view]; 
    } 
} 

しかし(明白なスコープ/ストレージの問題を無視します)

このサブクラスでは、ほぼすべての方向でスワイプ検出が可能な44.99度に設定できる許容角度を指定できます。

+0

UIPanGestureはオブジェクトを最初に保持する必要があります。 – vntstudy

関連する問題