如何设置SFSpeechRecognitionTask的委托?

Beb*_*ead 4 delegates speech-recognition objective-c ios swift3

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

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

class myViewControllerClass: SFSpeechRecognizerDelegate{

let mySpeechRecognizer = SFSpeechRecognizer(...)

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

//SFSpeechRecognizerDelegate Functions here
...

}  
//This works as expected, woo!
Run Code Online (Sandbox Code Playgroud)

但是,似乎SFSpeechRecognitionTask没有可以设置的委托属性.我尝试在我的课程中实现'SFSpeechRecognitionTaskDelegate'协议,希望它能够神奇地工作.但是,似乎从未调用过委托函数.哪种有意义,因为它无法知道我的视图控制器应该是委托,所以为什么会这样!?

Apple文档介绍了协议本身以及如何使用它:

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

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

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

另外在这里参考SFSpeechRecognizer文档,该文档具有协议AND并且标识您期望的委托属性:

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

是否有一些替代方法我应该为SFSpeechRecognitionTask设置委托?或者是以完全不同的方式处理?

The*_*mer 6

在SFSpeechRecognizer中有一种方法

func recognitionTask(with request: SFSpeechRecognitionRequest, 
        delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognizerTask
Run Code Online (Sandbox Code Playgroud)

您可以在哪里传递SFSpeechRecognizerTask的委托.

  • 啊,是的,这确实解决了委托问题,但给我留下了另一个问题,这可能是一个愚蠢的问题......我目前正在 SpeechRecognizer 上使用另一个识别任务方法:`func识别任务(与:SFSpeechRecognitionRequest,resultHandler:@escaping(SFSpeechRecognitionResult ?, Error?) -> Void)` 并使用结果处理函数来处理语音处理。如果我想要结果处理程序并定义委托,我该怎么办?我必须要我的蛋糕,却被迫茫然地盯着它而不是吃它吗?! (2认同)