0

私はUICollectionViewを使って素早くアプリを持っています。 UICollectionViewの各セルには、何らかのテキストを表示するView Controllerがあります。私はAVSpeechSynthesizerのテキストを読むのを開始して一時停止するために2つのボタンを追加しました。読み取り作品の1つのビューの開始および停止するためのAVSpeechSynthesizerは一度だけ動作します

func playclicked(){ 
    if isInitial { 
     let textString = (postTitle.text ?? "") + ".\n\n" + postContentWeb.stringByEvaluatingJavaScript(from: "document.body.textContent")! 
     synth = AVSpeechSynthesizer() 
     myVoice = AVSpeechSynthesisVoice(language: "de-DE") 
     myUtterance = AVSpeechUtterance(string: textString) 
     myUtterance.voice = myVoice 
     synth.speak(myUtterance) 
     synth.delegate = self 
     navigationItem.rightBarButtonItems = isPlayingButtons 
     isInitial = false 
    } else { 
     synth.continueSpeaking() 
     navigationItem.rightBarButtonItems = isPlayingButtons 
    } 
} 

func pauseclicked(){ 
    synth.pauseSpeaking(at: .word) 
    navigationItem.rightBarButtonItems = isStoppedButtons 
} 

が、私は別のセルを選択した場合、音声出力は、私はそれが前に働いていたセルを再選択しても、まったく動作を停止:二つの機能があります。アプリを再起動するだけで問題は解決します。

答えて

1

AVSpeechSynthesizer APIを使用して再生する前に、この問題が発生しました。

、あなたは正しくメソッドを使用している演奏とsyntesizerを一時停止:

continueSpeaking()とpauseSpeaking(時:.WORD)

あなたはシンセサイザーが話す終了する前のViewControllerを却下したいです代わりにこの方法を利用してください:

シンセサイザー.stopSpeaking(at:.immediate)

関連する問題