Objective c 未触发委托事件内部的函数
我已将此委托添加到我的实现文件中,由于某些原因,我无法更改按钮的图像,但我可以在控制台中看到日志Objective c 未触发委托事件内部的函数,objective-c,delegates,avaudioplayer,Objective C,Delegates,Avaudioplayer,我已将此委托添加到我的实现文件中,由于某些原因,我无法更改按钮的图像,但我可以在控制台中看到日志 - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *) aRecorder successfully:(BOOL)flag{ [PlayButton setImage:[UIImage imageNamed:@"playbutton.png"] forState:0]; NSLog (@"audioRecorderDid
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *) aRecorder successfully:(BOOL)flag{
[PlayButton setImage:[UIImage imageNamed:@"playbutton.png"] forState:0];
NSLog (@"audioRecorderDidFinishRecording:successfully:");
}
这很奇怪,因为我可以在其他任何地方更改按钮图像,并且在触发事件时可以在控制台中看到日志
:-S
下面是我如何分配代表的
avPlayer.delegate = self;
[avPlayer prepareToPlay];
[avPlayer play];
下面是我如何设置playbutton插座的
@interface OneStepRecordViewController : UIViewController<AVAudioPlayerDelegate>{
........
IBOutlet UIButton *PlayButton;
IBOutlet UIButton *StopButton;
.......
}
@接口OneStepRecordViewController:UIViewController{
........
IBUIButton*播放按钮;
IBUIButton*停止按钮;
.......
}
没有足够的声誉发表评论
请检查是否已设置正确的uicontrol状态
在您的代码中,您的PlayButton可能处于不同的状态,即不处于uicontrol状态正常
使用
检查状态
你可以把支票放在这里
- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *) aRecorder successfully:(BOOL)flag{
NSLog(@"Play button state: %d", [PlayButton state]); // this line
[PlayButton setImage:[UIImage imageNamed:@"playbutton.png"] forState:UIControlStateNormal];
NSLog (@"audioRecorderDidFinishRecording:successfully:");
}
此外,为了更好地理解(编程实践),请使用
[PlayButton setImage:[UIImage imageNamed:@"playbutton.png"] forState:UIControlStateNormal];
而不是一个“0”的幻数
希望能有所帮助。PlayButton是如何设置的,这个代理是如何分配的?@Chuck我刚刚用更多信息更新了我的帖子。你确认了PlayButton.png是否捆绑到你的应用程序中,并且可以在此代码之外成功加载吗?控制台中是否显示了日志AudioRecorderDifinishRecording:成功:记录?你能试着在主线程中调用方法setImage吗?@esker是的,因为这就是我设置它的方式,然后我切换到stopButton,然后在播放结束后确认播放。谢谢这有助于解决我的问题
[PlayButton setImage:[UIImage imageNamed:@"playbutton.png"] forState:UIControlStateNormal];