未触发委托事件内部的功能

时间:2013-07-25 22:47:02

标签: objective-c delegates avaudioplayer

我已将此委托添加到我的实现文件中,由于某种原因我无法更改按钮的图像,但是,我可以在控制台中看到日志。

- (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];

以下是我如何设置播放按钮

@interface OneStepRecordViewController : UIViewController<AVAudioPlayerDelegate>{
........
    IBOutlet UIButton *PlayButton;
    IBOutlet UIButton *StopButton;
.......
}

1 个答案:

答案 0 :(得分:0)

没有足够的声誉来发表评论

请检查您是否设置了正确的UIControlState,

在您的代码中,您的PlayButton可能处于不同的状态,即不在UIControlStateNormal

使用

[PlayButton state];

检查状态。

你可以把支票放在这里

- (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”幻数。

希望它有所帮助。