8

私はiOSを使い慣れていません。私のプロジェクトではUIPanGestureRecognizerを使用しています。ここでは、ビューをドラッグしているときに現在のタッチポイントと以前のタッチポイントを取得する必要があります。私はこれらの2つのポイントを得るのに苦労しています。UIPanGestureRecognizerメソッドで現在のタッチポイントと以前のタッチポイントを取得する方法は?

私が代わりにUIPanGestureRecognizerを使用してのtouchesBeganメソッドを使用している場合は、私は次のコードでこれらの2つの点を得ることができます:私はUIPanGestureRecognizerイベント消防法では、これら2つの点を取得する必要があります

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    CGPoint touchPoint = [[touches anyObject] locationInView:self]; 
    CGPoint previous=[[touches anyObject]previousLocationInView:self]; 
} 

。どうすればこれを達成できますか?私を案内してください。

答えて

15

あなたはこれを使用することができます:

CGPoint currentlocation = [recognizer locationInView:self.view]; 

ストア前の場所を見つけていない場合は、現在の場所を設定し、現在の場所毎回を追加することによって。

previousLocation = [recognizer locationInView:self.view]; 
3

UIPanGestureRecognizerをIBActionにリンクすると、変更ごとにアクションが呼び出されます。ジェスチャ認識装置にはstateという名前のプロパティもあります。このプロパティは、最初にUIGestureRecognizerStateBegan、最後にUIGestureRecognizerStateEnded、またはイベントがUIGestureRecognizerStateChangedの間であることを示します。

、あなたの問題を解決するため、以下のようなことをしようとする:

- (IBAction)panGestureMoveAround:(UIPanGestureRecognizer *)gesture { 
    if ([gesture state] == UIGestureRecognizerStateBegan) { 
     myVarToStoreTheBeganPosition = [gesture locationInView:self.view]; 
    } else if ([gesture state] == UIGestureRecognizerStateEnded) { 
     CGPoint myNewPositionAtTheEnd = [gesture locationInView:self.view]; 
     // and now handle it ;) 
    } 
} 

またtranslationInView:と呼ばれる方法を見ていることがあります。

0

次のようにあなたのパンジェスチャー認識をインスタンス化する必要があります

UIPanGestureRecognizer* panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 

を次に、あなたのビューにpanRecognizerを追加する必要があります

[aView addGestureRecognizer:panRecognizer]; 

ユーザーがビューと対話しながら、- (void)handlePan:(UIPanGestureRecognizer *)recognizerメソッドが呼び出されます。 handlePanでは:あなたは、ポイントは次のように触れ得ることができます。

CGPoint point = [recognizer locationInView:aView]; 

ます。またpanRecognizerの状態を取得することができます:

if (recognizer.state == UIGestureRecognizerStateBegan) { 
    //do something 
} else if (recognizer.state == UIGestureRecognizerStateEnded) { 
    //do something else 
} 
+0

理論的にはこれは機能しますが、実際にはそうではありません... – Sakiboy

0

ビューで前のタッチを取得するためのUITouch内の関数があります

  • (CGPoint)locationInView:(UIView *)view;
  • (CGPoint)previousLocationInView:(UIView *)view;
関連する問題