2011-06-21 14 views
0

少し問題があります。 私はUIViewをいくつか持っており、touchesBeganとtouchesMovedというメソッドでそれらをドラッグできます。フィンガーに対してUIVIewをドラッグする

私の問題は私のUIViewの座標(0,0)が私の指の下に来ることです。私はそれを避けたいと思います。

あなたはそれを行う方法を知っていますか?私はいくつかのことをしようとしたが成功しません:(

どうもありがとうございました!

答えて

1

それはビューのサイズに依存しますが、あなたはおそらくあなたのタッチの場所にcenterプロパティを設定することができます。

のアニメーションただ場所を移動したり、それを翻訳

[UIView animateWithDuration:0.25f 
         delay:0.0f 
        options:(UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseInOut) 
       animations:^{ 
        theView.center = tapLocation; 
       } 
       completion:NULL] 

代わりにあなたのタップ位置にセンターでは、あなたはすべてのであなたの現在のタッチにビューをアニメーション化することができます210メソッド。

+0

"ジャンプ"の効果が発生します。私は最初の時間にそれを録音した私の指に正確に従うことを望みます。 – Pierre

+0

ああ、あなたの位置にアニメートしたいですか? –

+1

初期タッチと中心の差を単純に計算してtouchesMoved値から差し引くことはできませんか? – Jake

0

あなたは下に押したときに、あなたの指が、その後、ドラッグの速度を測定し、あなたの視野の位置に速度を適用するポイント

を保存する(私は私のexempleの原点との私の見解を翻訳)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSUInteger touchCount = [touches count]; 
    NSUInteger tapCount = [[touches anyObject] tapCount]; 
    NSLog(@"touchesBegan"); 
    NSLog(@"%d touches", touchCount); 
    NSLog(@"%d taps", tapCount); 

    UITouch *touch = [touches anyObject]; 
    pNow = [touch locationInView:self]; 
    pLast = [touch locationInView:self]; 
} 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSUInteger touchCount = [touches count]; 
    NSUInteger tapCount = [[touches anyObject] tapCount]; 
    NSLog(@"touchesMoved"); 
    NSLog(@"%d touches", touchCount); 
    NSLog(@"%d taps", tapCount); 

    UITouch *touch = [touches anyObject]; 
    pNow = [touch locationInView:self]; 

    mouseSpeed.x = pNow.x - pLast.x; 
    mouseSpeed.y = pNow.y - pLast.y; 
    NSLog(@"mouseSpeed : %f, %f", mouseSpeed.x, mouseSpeed.y); 

    origin.x += mouseSpeed.x; 
    origin.y += mouseSpeed.y; 
    NSLog(@"origin : %f, %f", origin.x, origin.y); 

    //copy point for the next update 
    pLast = pNow; 
} 
関連する問題