swift - 使用 Swift 2.0 (OS X) 在语音合成过程中推进进度条

标签 swift macos speech-synthesis

当语音合成器正在读取文本 block 时,我试图以 5.0 的增量推进确定的进度条。这是我的代码(不起作用):

if speechSynthesizer.speaking == false {
    if let contents = textView.string where !contents.isEmpty {
        speechSynthesizer.startSpeakingString(contents)
        progressIndicator.hidden = false

        while speechSynthesizer.speaking == true {
            progressIndicator.incrementBy(5.0)
        }

        } else {
            speechSynthesizer.startSpeakingString("The document is empty.")
        }
   }

}

进度条显示但不增加。如果我取出“while...”并仅使用语句“progressIndicator.incrementBy(5.0)”,则进度会增加,但只会增加一次。

关于如何解决这个问题有什么建议吗?

提前感谢大家!

-同步-

最佳答案

您可能需要将更新 UI 的代码移至主运行循环,以便 UI 真正得到更新。因此,将该行放在调度 block 内。

dispatch_async(dispatch_get_main_queue()) {
    //insert UI code here 
}

关于swift - 使用 Swift 2.0 (OS X) 在语音合成过程中推进进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35249338/

相关文章:

ios - 尝试在已经呈现的 View Controller 上呈现 UIAlertController(空)[Swift]

macos - Mac : stream a video file as webcam to applications (similar to CamTwist)

javascript - 言语合成事件的问题

ios - 如何快速检查@NSManaged 属性是否为零?

swift - UITextField 离开光标,移除键盘

macos - 具有自定义 View 的 NSMenuItem 不接收鼠标事件

java - 无法在 OSX Mountain Lion 中运行 java,出现错误

speech - Web Speech API可以与Web Audio API一起使用吗?

c# - 从 HRESULT : 0x8004503A in Speechlib 获取异常

ios - 如何确定当前在 SwiftUI 中是否选择了 View