2011-11-14 37 views
0

カスタムUIViewで200x200円を作成しました。私は次のスクリプトを使用してiPad上の画面の周りのビューオブジェクトを移動しています。指のタッチで移動するときにビューオブジェクトがジャンプするのを防ぐ

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

if([touch view] == newShape) 
{ 
    newShape.center = currentPoint; 
} 

[self.view setNeedsDisplay]; 
} 

すべてがうまくいき、画面のどこにでも円を移動できます。しかし、私が円のオブジェクトの死んだ中心に触れなければ、それはわずかに飛びます。コードを読み取ることにより、接触が発生して最終的にその位置にすばやくスナップするところにnewShape.centerが設定されているので、これは非常に明白です。

私は、タッチ位置にスナップすることなくオブジェクトを移動する方法を探しています。私はこれを達成するためにxy座標を使用すると思っていますが、実装方法はわかりません。

ありがとうございます!

+0

私の頭の上に(コードはありません、iPhoneで)私はあなたの指が死んだ中心が働くかどうかを判断する簡単なif-thenを考えます。 [UIView]アニメーションブロックでそのnewShape.center行を使用してください。 (真剣に、スクリプトLOL) – CodaFi

答えて

2

CGPoint prevPos;を.hファイルで宣言してください。

私の見解は_rectViewです。

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

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

    if([touch view] == _rectView) 
    { 
     float delX = currentPoint.x - prevPos.x; 
     float delY = currentPoint.y - prevPos.y; 
     CGPoint np = CGPointMake(_rectView.frame.origin.x+delX, _rectView.frame.origin.y+delY); 
     //_rect.center = np; 
     CGRect fr = _rectView.frame; 
     fr.origin = np; 
     _rectView.frame = fr; 
    } 

    //[self.view setNeedsDisplay]; 

    prevPos = currentPoint; 
} 

上記のコードを使用してください。あなたはそのジャンプ効果を得ることはありません。

+0

私の答えはあなたの問題を解決しましたか? – Ilanchezhian

+0

'frame'プロパティと何か関係があったような気がしましたが、実装方法がわかりませんでした。私は今夜​​コードを試し、あなたの答えを記します。ありがとう。 – anthony

+0

完璧な作業!私は最後の行を外して少し狂ったが、私がそれを加えた直後に、それはうまくいった。ありがとうございました! – anthony

0

これを実行する明らかな方法は、図形の中心からの接触のオフセットを-touchesBegan:withEvent:に保存し、オフセットを-touchesMoved:withEvent:に適用することです。

関連する問題