在大多数情况下,设置委托就像在类中实现委托协议一样简单,并将该类的实例声明为您正在使用的任何实例的委托.
我实际上对SFSpeechRecognizer使用了同样的基本概念,它在我的代码中属于同一个语音框架.(伪代码示例):
class myViewControllerClass: SFSpeechRecognizerDelegate{ let mySpeechRecognizer = SFSpeechRecognizer(...) viewDidLoad(){ mySpeechRecognizer.delegate = self } ... //SFSpeechRecognizerDelegate Functions here ... } //This works as expected, woo!
但是,似乎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设置委托?或者是以完全不同的方式处理?
在SFSpeechRecognizer中有一种方法
func recognitionTask(with request: SFSpeechRecognitionRequest, delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognizerTask
您可以在哪里传递SFSpeechRecognizerTask的委托.