我正在使用 Dragon 移动 NDEV SDK,但我遇到了识别问题。在根视图中,这里有一个按钮来开始录制。用户可以在我的表格视图中选择带有语音的行,然后我的应用程序推送到相应的视图。但是在这个视图中,当用户再次按下记录按钮时,SKRecognizer 总是返回一个空数组,在第二个视图中,甚至在第一个视图中,如果用户使用后退按钮返回。我必须重新启动应用程序才能再次使用 SKRecognizer。如果我直接进入第二个视图并使用 SKRecognizer,在此视图上工作,但如果我导航识别不起作用。
我有一个专门用于 Dragon 识别器的类,我在每个视图中实例化这个类,每个视图都有一个属性。
- (IBAction)recordAction:(id)sender
{
if (_recognizer) {
[_recognizer release];
}
_recognizer = [[DragonRecognizer alloc] init];
[_recognizer startRecord];
}
和 SKRecognizer 代表:
- (void)recognizer:(SKRecognizer *)recognizer didFinishWithResults:(SKRecognition *)results
{
long numOfResults = [results.results count];
transactionState = TS_IDLE;
if (numOfResults > 0)
_result = [[results firstResult] lowercaseString];
[_recognizer release];
_recognizer = nil;
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:DragonReconizerFinishWithResults object:nil];
}
我在视图控制器中收到通知:
- (void)stopRecordReconizer:(NSNotification *)n
{
if (![self.navigationController.visibleViewController isKindOfClass:[self class]])
return;
NSString *mainResult = [_recognizer result]; // No result
}
你知道为什么 SKRecognizer 在第二次使用后给我发送一个空数组吗?
谢谢你的帮助!