AVSpeechSynthesizer 代表没有调用 iOS 11

AVSpeechSynthesizer delegates are not calling in iOS 11

这是我的文字转语音代码。 iOS 11 以下一切正常。但在 iOS 11 中未调用委托方法。

AVSpeechSynthesizerDelegate设置准确。 (因为它在 iOS 11 以下工作)

点击按钮

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
synthesizer.delegate = self;

AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:stringToSpeech];
[utterance setRate:AVSpeechUtteranceDefaultSpeechRate];
[utterance setPitchMultiplier:1];
[utterance setVolume:1];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
[synthesizer speakUtterance:utterance];

这些是我实现的委托方法。

-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance {
    NSLog(@"finished");
}

-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance{
    NSLog(@"Started");
}

有人遇到过这个问题吗? 任何帮助将不胜感激。

我正在 iOS 11.0.3 上测试,Xcode 9.0

您的 synthesizer 对象必须是 属性 才能工作:)。

要么制作你的 AVSpeechSynthesizer 实例,它是 synthesizer 像这样:

@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer;

或者像这样用 readwrite。

@property (readwrite, strong, nonatomic) AVSpeechSynthesizer *synthesizer;

让我知道这是否有效。