在Table视图委托方法之一中,我根据某些条件访问某些字符串 我希望使用ESpeak Engine说出这些字符串。在日志中它给出了所有匹配的字符串...但是ESpeak Engine只接受最后一个字符串(即,它只拼写最后一个字符串。)
如何拼写所有字符串..
这是我的代码..
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)celle forRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Final Speak Child List:%@",[stringComponentsForArray objectAtIndex:1]);
[engine speak:[stringComponentsForArray objectAtIndex:1]];
}
答案 0 :(得分:0)
如果您试图说出数组中的所有字符串,那么您可以将所有字符串附加到NSString属性,然后当UITableView完成加载时,您可以通过说出长附加的NSString来开始说出所有字符串。否则将其放在didSelectRowForIndex中并调用那个与数组的相应indexPath.row相关的方法。
[engine speak [stringComponentsForArray objectAtIndex:indexPath.row];
答案 1 :(得分:0)
通过快速查看标题,ESpeak不会将请求排队,这就是为什么最后一个会覆盖前一个请求。
您可以将文本组合成一个大字符串并按此方式执行,但如果您想要更改扬声器或控制时间,则无效。
你需要做的是做一个小队列,然后实现委托方法
- (void)speechEngineDidFinishSpeaking:(ESpeakEngine*)engine successfully:(BOOL)flag;
每个文本完成后,您可以添加下一个文本。
希望这有帮助