ほとんどの場合、デリゲートを設定するのは、デリゲートプロトコルをクラスに実装し、そのクラスのインスタンスを使用しているインスタンスのデリゲートとして宣言するのと同じくらい簡単です。SFSpeechRecognitionTaskのデリゲートをどのように設定しますか?
実際に私のコードで同じ音声フレームワークに属するSFSpeechRecognizerに同じ基本概念を使用しました。 (擬似コードの例):
class myViewControllerClass: SFSpeechRecognizerDelegate{
let mySpeechRecognizer = SFSpeechRecognizer(...)
viewDidLoad(){
mySpeechRecognizer.delegate = self
}
...
//SFSpeechRecognizerDelegate Functions here
...
}
//This works as expected, woo!
ただし、SFSpeechRecognitionTaskには設定できるデリゲートプロパティがないようです。私は、私のクラスで 'SFSpeechRecognitionTaskDelegate'プロトコルを実装しようとしましたが、魔法のように動作することを期待していました。しかし、デリゲート関数は呼び出されることはないようです。私のView Controllerがデリゲートでなければならないことを知る方法がないので、どのような意味があるのですか?
リンゴのドキュメントはプロトコル自体をカバーし、その使用方法:
https://developer.apple.com/reference/speech/sfspeechrecognitiontaskdelegate
しかし、タスク自体のドキュメントは、任意のデリゲートプロパティを識別しない:
https://developer.apple.com/reference/speech/sfspeechrecognitiontask
また、ここで参照するために、プロトコルを持ち、期待どおりのデリゲートプロパティを識別するSFSpeechRecognizerドキュメントがあります。
https://developer.apple.com/reference/speech/sfspeechrecognizer
私はSFSpeechRecognitionTaskのためのデリゲートを設定することになってるいくつかの代替方法はありますか?それとも全く違うやり方で扱われていますか? SFSpeechRecognizerで
はいああそれはデリゲートの問題を解決しますが、愚かなものであってもよい別の質問を私に残します...私は現在、他のrecognitionTaskを使用しています(SFSpeechRecognitionRequest、resultHandler:@escaping(SFSpeechRecognitionResult ?, Error?) - > Void) 'を呼び出し、結果ハンドラ関数を使用して音声処理を処理します。 結果ハンドラを作成してデリゲートを定義する場合はどうすればよいですか?私は私のケーキを持っていなければならないが、それを食べるよりむしろそれをむさぼって見つめなければならないのだろうか? – Bebhead
デリゲートは、 'オプションのfunc speechRecognitionTask(_タスク:SFSpeechRecognitionTask、didFinishRecognition recognitionResult:SFSpeechRecognitionResult)'メソッドを提供します。これはハンドラと同じことを信じています。 – TheAmateurProgrammer
ああ!ありがとうございます。 – Bebhead