2012-03-01 4 views
1

私は移動可能なボタンを持っていて、そのボタンをクリックしたときにメソッドを実行したいと思います - これはiosで可能ですか?iosのアニメーションボタンにクリックイベントをアタッチする方法

私は、次のコードを書いていますが、アニメーションは、その機能を起動できるようにするために、終了する必要があります

[arrowButton addTarget:self action:@selector(presentMainWindow) forControlEvents:UIControlEventTouchUpInside]; 


[UIView animateWithDuration:kAnimationDuration 
          delay:.2f 
         options:UIViewAnimationOptionCurveEaseInOut 
        animations: 
    ^{ 
     [arrowButton setTransform:CGAffineTransformMakeTranslation(kButtonShift, 0)]; 
     [arrowButton setFrame:CGRectMake(arrowButton.frame.origin.x + kButtonShift, arrowButton.frame.origin.y, arrowButton.frame.size.width, arrowButton.frame.size.height); 
    } 
        completion:nil]; 

答えて

5

私はあなたが単にアニメーションとの相互作用の両方を処理するために、アニメーションにUIViewAnimationOptionAllowUserInteractionオプションを追加できることを発見した:あなたの答えのための

[UIView animateWithDuration:kAnimationDuration 
          delay:.2f 
         options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionAllowUserInteraction 
        animations: 
    ^{ 
     [arrowButton setTransform:CGAffineTransformMakeTranslation(kButtonShift, 0)]; 
    } 
        completion:nil]; 
+0

自分自身や他人に注意してください:-)あなたはアニメーションをフリーズすることができます。これを行うには、[CATransaction begin]; [_arrowButton.layer removeAllAnimations]; [CATransaction commit]; – tiguero

0

限り、アニメーションはあなたが を見ることができず、どのような効果のみであるとしてこのような独自のアニメーションを作成する場合は、ボタンをクリックするだけでボタンをクリックできます

これは最適なソリューションであるかどうかはわかりませんが、実際の解決策です。

- (IBAction)startanimation:(id)sender { 

    old = CGPointMake(arrowButton.frame.origin.x,arrowButton.frame.origin.x); 
    [self ani]; 


} 
- (void)ani { 
    NSLog(@"ani1"); 

    if (arrowButton.frame.origin.x < old.x + kButtonShift) { 

     NSTimer*myTimer; 

     myTimer = [NSTimer scheduledTimerWithTimeInterval:kTimeInterval/kButtonShift*4 target:self selector:@selector(ani2) userInfo:nil repeats:NO]; 

} 
} 
- (void)ani2 { 
    NSLog(@"ani2"); 

    arrowButton.frame = CGRectMake((arrowButton.frame.origin.x + 1), arrowButton.frame.origin.y, arrowButton.frame.size.width, arrowButton.frame.size.height); 
    [self ani]; 

} 
+1

ハイテク感謝を!私はあなたがUIViewAnimationOptionAllowUserInteractionオプションをアニメーションで使用できるので、実際に自分のアニメーションを書く必要はありません。 – tiguero