Я использую приложение настроек iPad для изменения некоторых звуков кнопок и фонового изображения. Все работает хорошо, и настройки поддерживаются от одного запуска приложения до другого в симуляторе. Теперь я реализовал тумблер для установки или отключения набора звуков. Когда приложение запускается независимо от состояния переключателя, оно работает; например если переключатель «Alert Sounds» выключен, звуки оповещений будут тихими, и если я переключу его в положение ON, звуки начнут работать. Тем не менее, если я поверну переключатель обратно в положение OFF, звуки будут продолжать работать. Однако, если состояние включено при запуске приложения, звуки работают, но не будут заглушаться, когда переключатель установлен в положение OFF.
Обратите внимание, что это отличается от настроек, которые не вступают в силу до второго раунда настроек. Это была предыдущая проблема, которую я решил (благодаря переполнению стека) с помощью:
- (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
}
У меня нет другого, потому что я предполагаю, что никакие звуковые ресурсы не будут указаны, если alertSoundEnabled равно NO.
Я искал объяснения и учебники, в которых упоминается эта проблема, но пока не нашел ни одного, поэтому спрашиваю здесь. Спасибо за любые предложения.