У меня есть небольшая программа, которая позволяет вам ввести строку в текстовое поле, а затем заставить компьютер произносить текст.Вы также можете остановить его, если хотите.
Этот код:
- (void)speechSynthesizer:(NSSpeechSynthesizer *)sender didFinishSpeaking:(BOOL)finishedSpeaking
{
NSLog(@"Complete = %d", finishedSpeaking);
[stopButton setEnabled:NO];
[startButton setEnabled:YES];
[speakLineTableView setEnabled:YES];
}
печатает «1», если произнесена вся строка, и печатает «0», если нет.
Следующий код был добавлен для того, чтобы пользователь мог выбрать голос:
- (void)tableViewSelectionDidChange:(NSNotification *)notification
{
NSUInteger row = [speakLineTableView selectedRow];
if (row == -1)
{
return;
}
NSString *selectedVoice = [speakLineVoiceList objectAtIndex:row];
// The next line causes 'finishedSpeaking' to return 0 first time
// through. If you play it again, it returns 1 which is correct.
[speechSynth setVoice:selectedVoice];
NSLog(@"New voice = %@", selectedVoice);
}
Когда в строке «setVoice», в первый раз, когда вы просите программу говорить, она заканчивается на «0»,во второй раз это будет «1», что правильно.С этим комментарием он работает правильно, конечно, тогда вы не сможете изменить голос.«1» или «0» ни для чего не используются, поэтому я могу проигнорировать результат, но меня беспокоит, что уведомление не работает должным образом.Кто-нибудь есть идеи, почему это происходит и как это исправить?
Спасибо