UILabelを一度に2回更新するのに苦労します。基本的に、ユーザは再生ボタンを押して音を聞く。サウンドが再生されている間、UILabelに「メッセージ1」が表示されます。サウンドが再生されると、「メッセージ2」が同じラベルに表示されます。これを実行すると、ラベルは直接「メッセージ2」になります。同じ方法でUILabelを2回更新する
@interface ViewController : UIViewController
<AVAudioRecorderDelegate, AVAudioPlayerDelegate>
{
AVAudioPlayer *audioPlayer;
UIButton *playButton;
UILabel *answerLabel;
}
@property (nonatomic, retain) IBOutlet UIButton *playButton;
@property (nonatomic, retain) IBOutlet UILabel *answerLabel;
-(IBAction) play;
@end
.M
-(IBAction) play
{
int length = [audioPlayer duration];
[audioPlayer play];
answerLabel.text = @"Message 1";
[NSThread sleepForTimeInterval:length];
answerLabel.text = @"Message 2";
}
これはうまくいき、私の心は空になり、audioPlayerDidFinishPlayingの部分が見落とされたと思います。[NSThread sleepForTimeInterval:length]部分は必要ありません。 – SNV7