首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用AVSpeechSynthesizer委托方法didStartSpeechUtterance

未调用AVSpeechSynthesizer委托方法didStartSpeechUtterance
EN

Stack Overflow用户
提问于 2014-08-11 07:07:26
回答 2查看 1.4K关注 0票数 2

我在AVSpeechSynthesizer和话语方面遇到了问题(ios 7.1.1)

AVSpeechSynthesizer在处理程序类中初始化,并将委托设置为self:

代码语言:javascript
复制
self.synthesizer = [[AVSpeechSynthesizer alloc] init];

self.synthesizer.delegate = self;

我在委托中实现了以下方法:

代码语言:javascript
复制
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance {
    NSLog(@"Finish");
}

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

}

我的语音是通过这个方法调用的:

代码语言:javascript
复制
- (void)speak:(NSString *)spokenWord{

    AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:spokenWord];   

    [self.synthesizer speakUtterance:utterance]; 

}

然后我重复调用该方法,例如

代码语言:javascript
复制
[AVhandler speak:_word];
[AVhandler speak:_word];
[AVhandler speak:_word];

我期望在日志中看到:开始、结束等

但我看到的是:开始结束结束

为什么没有调用didStartSpeechUtterance?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-02-05 17:54:27

回答有点晚了,抱歉。要解决此问题,还应放入:

代码语言:javascript
复制
synthesizer.delegate = self;

在-(void)中,如下所示

代码语言:javascript
复制
 - (void)speak:(NSString *)spokenWord{

AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:spokenWord];   

[self.synthesizer speakUtterance:utterance]; 
synthesizer.delegate = self;

}

在didFinish中,如下所示:

代码语言:javascript
复制
-(void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance {
NSLog(@"Finish");
synthesizer.delegate = self;
}
票数 1
EN

Stack Overflow用户

发布于 2015-04-02 15:48:39

另外,不要忘记在.h文件中添加对AVSpeechSynthesizerDelegate协议的引用,例如:

代码语言:javascript
复制
@interface ViewController : UIViewController <AVSpeechSynthesizerDelegate>

然后,您可以只将synthesizer.delegate = self;放在ViewDidLoad方法中。

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25233866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档