0

AVSpeechSynthesizer が話している間、アプリにビューを表示し、話し終わるとビューが消えるようにしたいと考えています。

-(void)speakText {
    AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
    float speechSpeed = 0.12;
    AVSpeechUtterance *synUtt = [[AVSpeechUtterance alloc] initWithString:textString];
    [synUtt setRate:speechSpeed];
    [synUtt setVoice:[AVSpeechSynthesisVoice voiceWithLanguage:selectedVoice]];
    [synthesizer speakUtterance:synUtt];


//BELOW TO APPEAR AND AND DISAPPEAR

        [UIButton beginAnimations:nil context:nil];
        [UIButton setAnimationDuration:0.5];
        [UIButton setAnimationDelay:0.0];
        [UIButton setAnimationCurve:UIViewAnimationCurveEaseOut];
        _speakingScrollView.frame = CGRectMake(236, 675, _speakingScrollView.frame.size.width, _speakingScrollView.frame.size.height);
        [self.view bringSubviewToFront:_speakingScrollView];
        [UIView commitAnimations];

}

私はこれについてどうやって行くのかわからないようですか?Appleのドキュメントが示唆しているのを見ました

@property(nonatomic, readonly, getter=isSpeaking) BOOL speaking

しかし、これをアプリに実装する方法を試してみることはできません。

4

1 に答える 1

1

ドキュメントをざっと見てみるとAVSpeechSynthesizer、プロパティがあることがわかりdelegateます。

音声合成装置のイベントを通知できるように、プロトコルを設定しdelegateて実装する必要があります。AVSpeechSynthesizerDelegate

などのイベント

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer
 didFinishSpeechUtterance:(AVSpeechUtterance *)utterance;

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer
  didStartSpeechUtterance:(AVSpeechUtterance *)utterance;

いつ開始していつ終了するかを知りたいと考えると、あなたにとって最も興味深いでしょう。また、キャンセル、一時停止、継続のイベントもあり、UI の表示と非表示を切り替えるために実装することもできます。

于 2015-02-04T16:36:00.870 に答える