我的委托方法audioRecorderDidFinishRecording
and audioPlayerDidFinishPlaying
没有被调用。这些方法应该触发“stopanimation”方法,该方法在录制完成后停止动画。
我已拨打电话至stopanimation
方法在最后audioPlayerDidFinishPlaying
.
这是分配委托的相关代码:
VoiceEditor.h
@interface VoiceEditor : UIViewController <UITextFieldDelegate, AVAudioRecorderDelegate, AVAudioPlayerDelegate>{
}
VoiceEditor.m
- (void)record{
recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:pathString] settings:recordSettings error:nil];
[recorder setDelegate:self];
[recorder record];
recording = YES;
[pauseButton setImage:[UIImage imageNamed:@"stop.png"] forState:UIControlStateNormal];
[pauseButton setEnabled:YES];
[playButton setEnabled:NO];
[recordButton setEnabled:NO];
[self beginAnimation];
}
- (void)play{
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:pathString] error:nil];
double seconds=[player duration];
NSLog(@"%f",seconds);
[player setDelegate:self];
[player play];
playing = YES;
[recordButton setEnabled:NO];
[pauseButton setEnabled:YES];
[playButton setEnabled:NO];
[self beginAnimation];
}
您设置委托的代码看起来不错。
您是否假设委托方法被调用不仅仅是因为动画没有停止,或者您是否尝试直接记录/断点方法?如果您还没有直接进行测试,请先假设它们没有进行测试。
如果您已确认它们没有被称为,那么很可能您的动画正在捆绑self
对象,使其无法响应 AV 委托方法。
注释掉动画,然后将日志放入 AV 委托方法中以查看它们是否被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)