0

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

私はアプリ作成の初心者で、現在アニメーションのプロジェクトに取り組んでいます。これまでのところボタンがあり、ユーザーがボタンを押すとアニメーションが再生されて終了します。しかし、ユーザーが再生を押した後にiPhoneを振る必要があるため、助けが必要です。これは、ユーザーがiPhoneを振るとuilabelが消えてアニメーションが再生されると、uilabelがシェイクして再生すると表示されたときに正確に必要なものです。ここに私がこれまでに持っているものがあります: -(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];


button.hidden = 1;
animation.hidden = 0;
Menu.hidden = 0;
replay.hidden = 0;

}

これは私が入れる予定のものです:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.subtype == UIEventSubtypeMotionShake)

全くの初心者ですので、詳しく教えていただけるとありがたいです!:)

4

3 に答える 3

1

Objective-C では IBAction と void はある程度同等であるため、「IBAction に void を配置する」ことでこれを解決することはできません。

ただし、これを機能させる方法は次のとおりです。ユーザーがボタンを押すと、ラベルを作成し、ユーザーがラベルを押したことを示す BOOL フラグを設定します。

motionEnded:withEventメソッド内でif (event.subtype == UIEventSubtypeMotionShake && flag)、アニメーションを開始する前に確認します。

フラグを NO/false に初期化することを忘れないでください

サンプルコードは次のとおりです。

あなたの .h ファイルは次のようになっていると思います

@interface MyController: UIViewController {
  BOOL buttonPressed;
}
@end

.m ファイルの内容は次のとおりです。

- (void)viewDidLoad {
  buttonPressed = NO;
}

- (IBAction)buttonPress:(id)sender {
  buttonPressed = YES;
  // show label
}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
  if (event.subtype == UIEventSubtypeMotionShake && buttonPressed) {
    // start animation
  }
}
于 2012-06-29T21:06:24.293 に答える
0

あなたはボイドを呼び出すことができます[self nameOfTheVoid];

-(IBAction)youraction {

    //some code in here
    [self motionEnded];
}
于 2012-06-29T21:04:50.697 に答える
0

ボタンに接続された関数を作成します。これにより、次のようなフラグが設定され、BOOL buttonPressedそのラベルが表示され、ユーザーに電話を振るように指示されます。

motionEndedYESかどうかを確認できます。そのbuttonPressed場合は、そのラベルを非表示にし、アニメーションを実行してbuttonPressedから、NO に戻します。

于 2012-06-29T21:07:00.310 に答える