我遇到了AVAudioPlayer的问题。我的声音文件完成后我想做点什么。声音正在播放,但未调用audioPlayerDidFinishPlaying。
我的.h
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface Tag1Uebung1ViewController : ViewController {
AVAudioPlayer *audioPlayer;
}
@end
我的.m(impl。文件)
#import "Tag1Uebung1ViewController.h"
#import <AVFoundation/AVFoundation.h>
#import "Tag1U2ViewController.h"
@interface Tag1Uebung1ViewController ()
@end
@implementation Tag1Uebung1ViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/crunch_wdh8.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer.delegate = self;
NSLog(@"Entered the callback function");
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
//audioPlayer.numberOfLoops = 0;
if (audioPlayer== nil) {
NSLog([error description]);
} else {
[audioPlayer play]; }
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"audioPlayerDidFinishPlaying");
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
我的调试控制台只给了我“输入回调函数”,所以我的意思是正确调用了viewDidLoad函数。我做错了什么?
答案 0 :(得分:8)
必须在audioPlayer初始化后设置delegete。
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.delegate = self;
答案 1 :(得分:1)
在.h文件中添加委托协议:
@interface Tag1Uebung1ViewController : ViewController <AVAudioPlayerDelegate> {
AVAudioPlayer *audioPlayer;
}