我想知道如何让AVSpeechSynthesisVoice从按钮中读取文本。我对Swift很新。但是,我从字符串中读取以下内容:
@IBAction func btnOption1Audio(sender: UIButton)
{
myUtterance = AVSpeechUtterance(string: "Hola")
myUtterance.rate = 1
synth.speakUtterance(myUtterance)
myUtterance.voice = AVSpeechSynthesisVoice(language: "es-ES")
}
但是当我把它改成这样的东西(阅读按钮文本)时,它将无法正常工作。我确信这只是一个语法问题:
@IBAction func btnOption1Audio(sender: UIButton)
{
myUtterance = AVSpeechUtterance(string: btnOption1Tap.titlelabel.text)
myUtterance.rate = 1
synth.speakUtterance(myUtterance)
myUtterance.voice = AVSpeechSynthesisVoice(language: "es-ES")
}
我哪里错了?
提前致谢
答案 0 :(得分:1)
您的代码中不清楚btnOption1Tap
是什么。如果它是@IBOutlet
到UIButton
,那么您仍然会遇到一些问题。
titleLabel
是一个返回 Optional UILabel
的属性。必须在使用前将其打开。同样,text
的{{1}}属性会返回 Optional UILabel
,也必须将其解包。您需要执行以下操作:
String
您可能希望说出与if let buttontext = btnOption1Tap.titleLabel?.text {
myUtterance = AVSpeechUtterance(string: buttontext)
myUtterance.rate = 1
synth.speakUtterance(myUtterance)
myUtterance.voice = AVSpeechSynthesisVoice(language: "es-ES")
}
UIButton
相关联的文字。在这种情况下,您可以使用sender
的{{1}}属性并使用 nil coalescing运算符 currentTitle
来安全地解包 Optional UIButton
:
??