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 に答える