Използвам приложението за настройки на iPad, за да променя някои звуци на бутони и фоново изображение. Всичко работи добре и настройките се поддържат от едно стартиране на приложение до друго в симулатора. Сега внедрих превключвател за изключване или включване на набори от звуци. Когато приложението се стартира, в каквото и състояние да е превключвателят, той работи; напр. ако превключвателят „Звуци за предупреждение“ е ИЗКЛЮЧЕН, звуците за предупреждение са безшумни и ако го променя на ВКЛ., звуците ще започнат да работят. Въпреки това, ако изключа превключвателя обратно, звуците продължават да работят. Въпреки това, ако състоянието е ВКЛЮЧЕНО, когато приложението се стартира, звуците работят, но няма да бъдат заглушени, когато превключвателят е настроен на ИЗКЛ.
Обърнете внимание, че това е различно от настройките, които не влизат в сила до втори кръг от настройки. Това беше предишен проблем, който реших (благодарение на препълването на стека), като използвах:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] synchronize];
}
Имам методи, наречени:
- (void)defaultsChanged:(NSNotification *)NSUserDefaultsDidChangeNotification
(което се извиква при изпращане на известието)
и
-(void)setValuesFromPreferences
(което се извиква във ViewDidLoad)
Логиката изглежда така и в двете:
// Set alert sounds from preferences
NSString *alertSoundPreference = [userDefaults stringForKey:kAlertSound];
BOOL alertSoundEnabled = [userDefaults boolForKey:kAlertSoundEnabled];
if (alertSoundEnabled)
{
// Create the URLs for the alert audio files
// Store the alert sound URLs as a CFURLRef instances
// Create system sound objects representing the alert sound files
}
Нямам else, защото предполагам, че няма да бъдат посочени звукови ресурси, ако alertSoundEnabled е NO.
Търсих обяснения и уроци, които споменават този проблем, но все още не съм намерил, затова питам тук. Благодаря за всякакви предложения.