次のコード サンプルで作業を開始できます。これにより、スライダーは進行状況インジケーターとして機能し、ユーザーはそれをスクラブして指定した位置から再生を開始できます。
/* SliderMoved は、スライダーの値が変更されたときに呼び出されます (ユーザーがスライダーをスクラブしたとき、またはオーディオ再生の進行に合わせて自動更新されたとき) */
-(void)sliderMoved:(id)sender
{
[self.playbackTimer invalidate];
self.playbackTimer = nil;
NSInteger position = (NSInteger)self.slider.value * 60; // Assume the slider scale is in minutes- so convert to sec
if (self.isPlaying)
{
[self.audioPlayer pause];
}
[self.audioPlayer setCurrentTime:position];
if (self.isPlaying)
{
[self startOrResumePlaying];
}
[self updateSlider];
}
/* updateSlider は、スライダー値を更新するためのヘルパー関数です */
-(void)updateSlider
{
float total= self.audioPlayer.duration;
float f = (self.audioPlayer.currentTime) ;
self.slider.value = f/60.0;
self.progressLabel.text = [NSString stringWithFormat:@"%.2f",self.slider.value];
}
/* startOrResumePlaying は、オーディオの再生を開始し、3 秒ごとに進行状況インジケーターを自動インクリメントするタイマーを初期化します */
-(void)startOrResumePlaying
{
[self.audioPlayer prepareToPlay];
[self.audioPlayer play];
self.isPlaying = YES;
self.playbackTimer=[NSTimer scheduledTimerWithTimeInterval:3.0
target:self
selector:@selector(handleTimer:)
userInfo:nil
repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.playbackTimer forMode:NSDefaultRunLoopMode];
}