Не уверен, возможно ли это с помощью AudioService API, но вы можете использовать вместо него AVAudioPlayer
и назначить делегата, который реализует протокол AVAudioPlayerDelegate
и что-то делает, когда вызывается audioPlayerDidFinishPlaying:successfully:
.
Не забудьте добавить AVFoundation
framework.
Пример:
В вашем определении интерфейса:
#import <AVFoundation/AVFoundation.h>
...
@inteface SomeViewController : UIViewController <AVAudioPlayerDelegate>
...
@propety(nonatomic, retain) AVAudioPlayer *player;
В вашей реализации:
@synthesize player;
...
// in some viewDidLoad or init method
self.player = [[[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:NULL] autorelease];
self.player.delegate = self;
...
- (void)pressButton:(id)sender {
// set play image
[self.player stop];
self.player.currentTime = 0;
[self.player play];
}
...
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
// set finish image
}
...
# in some dealloc or viewDidUnload method
self.player = nil;