ios - 如何为 SFSpeechRecognitionTask 设置委托(delegate)?

标签 ios objective-c delegates swift3 speech-recognition

在大多数情况下,设置委托(delegate)就像在类中实现委托(delegate)协议(protocol)一样简单,并将该类的实例声明为您正在使用的任何实例的委托(delegate)。

我实际上在 SFSpeechRecognizer 中使用了相同的基本概念,它在我的代码中属于相同的语音框架。 (伪代码示例):

class myViewControllerClass: SFSpeechRecognizerDelegate{

let mySpeechRecognizer = SFSpeechRecognizer(...)

viewDidLoad(){
mySpeechRecognizer.delegate = self
}
...

//SFSpeechRecognizerDelegate Functions here
...

}  
//This works as expected, woo!

但是,SFSpeechRecognitionTask 似乎没有可以设置的委托(delegate)属性。我尝试在类里面实现“SFSpeechRecognitionTaskDelegate”协议(protocol),希望它能神奇地发挥作用。然而,委托(delegate)函数似乎从未被调用过。哪一种有意义,因为它无法知道我的 View Controller 应该是委托(delegate),所以为什么要这样做!?

苹果文档涵盖了协议(protocol)本身以及如何使用它:

https://developer.apple.com/reference/speech/sfspeechrecognitiontaskdelegate

但是任务本身的文档没有标识任何委托(delegate)属性:

https://developer.apple.com/reference/speech/sfspeechrecognitiontask

这里还有 SFSpeechRecognizer 文档作为引用,它具有协议(protocol)并按照您的预期识别委托(delegate)属性:

https://developer.apple.com/reference/speech/sfspeechrecognizer

有没有其他方法可以让我为 SFSpeechRecognitionTask 设置委托(delegate)?还是以某种完全不同的方式处理?

最佳答案

在SFSpeechRecognizer中有一个方法

func recognitionTask(with request: SFSpeechRecognitionRequest, 
        delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognizerTask

您可以在其中传递 SFSpeechRecognizerTask 的委托(delegate)。

关于ios - 如何为 SFSpeechRecognitionTask 设置委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41745577/

相关文章:

ios - 是否可以在 iOS 库中执行 View Controller 单元测试?

ios - 将数组传递给单例(swift)

ios - Swift 获取前几年的日期时间 GMT+08 :00 timezone

ios - React Native - 预期参数类型“RCTViewManagerUIBlock”

objective-c - NSArray 索引 1 超出空数组的范围

ios - 是否可以在不使用单例的情况下访问 View Controller 的特定实例?

ios - 模仿默认 iOS "globe"按钮的自定义键盘

objective-c - 让 NSAlert 成为最顶层的窗口?

ios - Swift:从其他 Viewcontroller 调用 PageViewController 中的函数

templates - D 如何允许委托(delegate)作为模板参数?