В соответствии с Apple Doc, AVSpeechUtterance
является базовой единицей синтеза речи.
AVSpeechSynthesizer имеет делегата: AVSpeechSynthesizerDelegate
. Этот протокол содержит интересные методы, позволяющие решить вашу проблему. Цитирую:
В Swift:
speechSynthesizer(_:didCancelSpeechUtterance:)
speechSynthesizer(_:didContinueSpeechUtterance:)
speechSynthesizer(_:didFinishSpeechUtterance:)
speechSynthesizer(_:didPauseSpeechUtterance:)
speechSynthesizer(_:didStartSpeechUtterance:)
speechSynthesizer(_:willSpeakRangeOfSpeechString:utterance:)
В Objective C
speechSynthesizer:didCancelSpeechUtterance:
speechSynthesizer:didContinueSpeechUtterance:
speechSynthesizer:didFinishSpeechUtterance:
speechSynthesizer:didPauseSpeechUtterance:
speechSynthesizer:didStartSpeechUtterance:
speechSynthesizer:willSpeakRangeOfSpeechString:utterance:
Посмотрите на Apple Doc
Я не использовал это раньше, но похоже, что вы отправляете экземпляр AVSpeechUtterance в AVSpeechSynthesizer для того, чтобы говорить по телефону строка. Это верно? Если это так, используемый вами AVSpeechSynthesizer имеет свойство 'delegate', которое вы можете установить, чтобы получить методы обратного вызова. [Здесь] (https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVSpeechSynthesizerDelegate_Ref/index.html#//apple_ref/occ/intf/AVSpeechSynthesizerDelegate) - это методы обратного вызова, которые вы можете использовать, если вы указываете 'делегат'. – keithbhunter