AVSpeechSynthesisVoice从按钮标签读取

时间:2016-01-01 12:03:29

标签: ios swift

我想知道如何让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")

    }

我哪里错了?

提前致谢

1 个答案:

答案 0 :(得分:1)

您的代码中不清楚btnOption1Tap是什么。如果它是@IBOutletUIButton,那么您仍然会遇到一些问题。

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

??