0

重複の可能性:
IBAction(ボタン) 内に void(シェイク ジェスチャ) を配置するにはどうすればよいですか?

こんにちは、アプリを作成しています。助けが必要です。以前にこの質問を 2 回したことがありますが、正しい答えが得られていません。私はXcodeに非常に慣れていないので、答える前に答えを説明してください。そのため、再生というボタンがあり、現在クリックするとアニメーションがスムーズに表示されてから終了します。私が変更する必要があるのは、ユーザーが再生を押したとき、デバイスを振って開始するというラベルです。次に、ユーザーがデバイスを振ると、ラベルが消え、アニメーションが再生されて終了します。これまでの viewcontroller.m ファイルの内容は次のとおりです。

-(IBAction)startanimation {





animation.animationImages= [NSArray arrayWithObjects:
                                [UIImage imageNamed:@"Frame0.png"],
                                [UIImage imageNamed:@"Frame1.png"],
                                [UIImage imageNamed:@"Frame2.png"],
                                [UIImage imageNamed:@"Frame3.png"],
                                [UIImage imageNamed:@"Frame4.png"],
                                [UIImage imageNamed:@"Frame5.png"],
                                [UIImage imageNamed:@"Frame6.png"],
                                [UIImage imageNamed:@"Frame7.png"],
                                [UIImage imageNamed:@"Frame8.png"],
                                [UIImage imageNamed:@"Frame9.png"],
                                [UIImage imageNamed:@"Frame10.png"],
                                [UIImage imageNamed:@"Frame11.png"],
                                [UIImage imageNamed:@"Frame12.png"],
                                [UIImage imageNamed:@"Frame13.png"],
                                [UIImage imageNamed:@"Frame14.png"], 
                                nil];

    [animation setAnimationRepeatCount:1];
    animation.animationDuration = 1;
    [animation startAnimating];



}

ちなみに IBAction:startanimation はユーザーが「再生」ボタンを押したときのアクションです

私はコーディングの初心者だと考えてください。質問がある場合は、お気軽にお問い合わせください。ありがとうございます!

4

2 に答える 2

2

方法

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;

このコードを使用するだけです:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
  if (event.type == UIEventSubtypeMotionShake) {
    //Your code here
  }
}
于 2012-06-30T12:13:48.497 に答える
1

ヘッダー ファイル (.h) に次を追加します。

@interface YourViewController : UIViewController
{
    IBOutlet UILabel *label;
    BOOL canStartAnimation;
}

開始アニメーションも変更

-(IBAction)startanimation 
{
    canStartAnimation = YES;
    label.text = @"shake to animate";
}

この機能を追加

-(void) doTheAnimation {
    animation.animationImages= [NSArray arrayWithObjects:
                                [UIImage imageNamed:@"Frame0.png"],
                                [UIImage imageNamed:@"Frame1.png"],
                                [UIImage imageNamed:@"Frame2.png"],
                                [UIImage imageNamed:@"Frame3.png"],
                                [UIImage imageNamed:@"Frame4.png"],
                                [UIImage imageNamed:@"Frame5.png"],
                                [UIImage imageNamed:@"Frame6.png"],
                                [UIImage imageNamed:@"Frame7.png"],
                                [UIImage imageNamed:@"Frame8.png"],
                                [UIImage imageNamed:@"Frame9.png"],
                                [UIImage imageNamed:@"Frame10.png"],
                                [UIImage imageNamed:@"Frame11.png"],
                                [UIImage imageNamed:@"Frame12.png"],
                                [UIImage imageNamed:@"Frame13.png"],
                                [UIImage imageNamed:@"Frame14.png"], 
                                nil];

    [animation setAnimationRepeatCount:1];
    animation.animationDuration = 1;
    [animation startAnimating];   
    label.text = @"";
}

motionBegan を追加する

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (event.type == UIEventSubtypeMotionShake && canStartAnimation) {
        [self doTheAnimation];
    }
}
于 2012-06-30T12:15:39.347 に答える