使用iOS 7上的AVSpeechSynthesizer,但保留兼容性iOS 6
问题描述:
您好,我了解TTS仅在iOS 7中可用,但我过去通过检查该类是否可用,并设法保留了以前版本的兼容性,但使用AVSpeechSynthesizer它似乎不工作,你能帮我使用iOS 7的TTS,并通过在iOS 6中禁用它来保持兼容性,非常感谢。使用iOS 7上的AVSpeechSynthesizer,但保留兼容性iOS 6
这里是我的代码,但它似乎没有工作
if (([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)) {
if([AVSpeechSynthesizer class]) {
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:text];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"];
utterance.rate = AVSpeechUtteranceDefaultSpeechRate/2;
utterance.pitchMultiplier = 0.9;
utterance.preUtteranceDelay = 0;
utterance.postUtteranceDelay = 0;
[synth speakUtterance:utterance];
} else {
// Feature not available, do something else
}
}
我已经在我的项目链接avfoundation并设置部署目标iOS 6中,它似乎只工作在iOS 7设备乳宁时如果它的iOS 6崩溃了。
这里是错误消息我得到
dyld: Symbol not found: _AVSpeechUtteranceDefaultSpeechRate
答
该框架必须是弱链接。请执行以下操作:
- 单击项目导航您的项目文件(左侧)在编辑器中打开您的项目
- 点击构建阶段在编辑器中标签
- 展开链接二进制与图书馆部分
- 设置AVFoundation.framework从要求到可选
此外,你可能想用one that's safer更新您的版本检查(和苹果推荐)。
你有没有薄弱的联系框架? – rmaddy
非常感谢你,在模拟器中它似乎工作! –
转到“构建阶段”并将“AVFundation”从必需变为可选...和Voila! – TonyMkenu