在大多数情况下,设置委托(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/