0

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

- (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;
.......
}
4

1 回答 1

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

希望能帮助到你。

于 2013-07-26T02:22:28.010 回答