SNV*_*NV7 2 iphone xcode objective-c uilabel ipad
我在查找热门时遇到一些麻烦,在一次动作中两次更新UILabel.基本上用户点击播放按钮来听到声音.当声音播放时,"消息1"出现在UILabel中.当声音完成播放时,"消息2"出现在同一标签中.当我运行此标签时,标签直接转到"消息2".
.H
@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
Run Code Online (Sandbox Code Playgroud)
.M
-(IBAction) play
{
int length = [audioPlayer duration];
[audioPlayer play];
answerLabel.text = @"Message 1";
[NSThread sleepForTimeInterval:length];
answerLabel.text = @"Message 2";
}
Run Code Online (Sandbox Code Playgroud)
我看到你实现了AVAudioPlayerDelegate协议,所以我假设在某些时候你将播放器的委托设置为self
如果是这种情况,请将播放方法更改为以下内容:
-(IBAction) play
{
[audioPlayer play];
answerLabel.text = @"Message 1";
}
Run Code Online (Sandbox Code Playgroud)
然后实现此方法:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
answerLabel.text = @"Message 2";
}
Run Code Online (Sandbox Code Playgroud)