Ниже приведен довольно простой (и надежный) способ как минимум открыть системные настройки для Speech.prefPane:
- (IBAction)openSpeechPrefs:(id)sender {
[[NSWorkspace sharedWorkspace] openURL:
[NSURL fileURLWithPath:@"/System/Library/PreferencePanes/Speech.prefPane"]];
}
Однако он не обязательно будет переключен на Text to Speech
вкладка, а точнее последняя вкладка, которую выбрал пользователь.
Можно фактически переключиться и на вкладку «Текст в речь», но она немного сложнее.Вы можете использовать AppleScript для отправки команд в приложение «Системные настройки», но использование ScriptingBridge.framework
(см. Руководство по программированию Scripting Bridge ) намного быстрее.
Вам нужно будет добавить ScriptingBridge.framework
к вашему проекту, а затем используйте команду, подобную следующей в терминале, чтобы сгенерировать заголовочный файл SBSystemPreferences.h
для работы с:
sdef "/Applications/System Preferences.app" | sdp -fh --basename SBSystemPreferences -o ~/Desktop/SBSystemPreferences.h
Добавьте заголовок SBSystemPreferences.h
кзатем измените -openSpeechPrefs:
на следующее:
- (IBAction)openSpeechPrefs:(id)sender {
SBSystemPreferencesApplication *systemPrefs =
[SBApplication applicationWithBundleIdentifier:@"com.apple.systempreferences"];
[systemPrefs activate];
SBElementArray *panes = [systemPrefs panes];
SBSystemPreferencesPane *speechPane = nil;
for (SBSystemPreferencesPane *pane in panes) {
if ([[pane id] isEqualToString:@"com.apple.preference.speech"]) {
speechPane = pane;
break;
}
}
[systemPrefs setCurrentPane:speechPane];
SBElementArray *anchors = [speechPane anchors];
for (SBSystemPreferencesAnchor *anchor in anchors) {
if ([anchor.name isEqualToString:@"TTS"]) {
[anchor reveal];
}
}
}
РЕДАКТИРОВАТЬ:
Пример проекта с использованием метода ScriptingBridge.framework: http://github.com/NSGod/OpenSystemPrefsTTS