質問

かなり基本的な質問があります。いくつかの(5) UIImageView 画像があります 私の画面。ボタンをクリックすると、各画像を変更したい 他の何かに。また、各画像が変更されるたびにサウンドを再生します。

したがって、基本的には、各画像が変わるたびにクリック音が必要です。

問題は、何らかの理由で、5つの画像を言っている場合です。
サウンドが最初に5回再生された後、画像が変更されます。

コントロールがに戻ったときにのみ画像が更新されるように 入力用のユーザー。

どうすれば「強制」できますか表示する画像を指定したらすぐに画像を更新しますか?

私はiphone / macworldが初めてなので、簡単に操作してください:-)

リック

役に立ちましたか?

解決

  

画像が更新されるのは、コントロールが入力のためにユーザーに戻ったときだけです。

それがまさに起こることです。 UIはメインスレッドで更新されるため、コードの実行中は更新されません。

目的を達成するには、タイマーが必要になります。 NSTimerのドキュメントをご覧ください。 2番目のイメージを変更するメソッドを起動するタイマーを作成してから、3番目のイメージを変更するためにタイマーを再キューイングする必要があります。あなたが必要とするようなタイマーを作成する便利な方法があります: +(NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)繰り返し

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

次に、メソッドがあります:

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

updateImage3メソッドの実装はあなたにお任せします:;-)

このように更新を実行すると、メインスレッドにUIを更新する機会が与えられます。

他のヒント

UIImageViewを定期的に更新する方法を探している場合は、次を参照できます。 http://www.shanison.com/2010/12/ 25 / uiimageview-load-remote-image /

サウンドを非同期で再生しながら、おそらくディスクまたはネットワークからイメージをロードしているようです。 UIImage + imageWithContentsOfURL:とともに AudioServicesPlaySystemSound を使用しているのでしょうか?ここでは、実際の画像の読み込みとサウンドの再生コードが最も役立ちます。

uiimageviewの背景を変更して更新し、その後もコードの実行を続けたい場合、これは私にとってはうまくいきました:

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top