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