iOS: не могу установить uiApplication idletimerdisabled на да в didfinishlaunchingwithoptions

StackOverflow https://stackoverflow.com/questions/7355458

Вопрос

У меня есть приложение для iPad, где пользователь может установить IdletimerDisabled на да или нет через переключатель в настройках. Эта часть работает нормально. Тем не менее, изначально устанавливая его на «Да» в приложении DidFinishLaUnchingWithoptions Метод делегата, если это первый раз, когда приложение работает, не работает (в любом случае, устройство автоматически снабжает).

Я попробовал взломать его сначала, а затем, как описано в других темах, но безрезультатно. Все остальные аспекты предпочтений (StandardUserDefaults) также работают нормально.

Вот соответствующий код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // if app run for the first time, set these as defaults
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    if (![prefs objectForKey:@"autoSleep"]) {
    // this conditional code runs, as traced using NSLog   
    [prefs setBool:YES forKey:@"autoSleep"];
    application.idleTimerDisabled = NO;
    application.idleTimerDisabled = YES;
    }
}
Это было полезно?

Решение

Использовать registerDefaults метод NSUserDefaults Вместо того, чтобы тестировать, если ObjectForKey равна нулю.

Смотрите также подробности об этом в соответствующем руководстве по программированию. Анкет После того, как у вас есть значения регистрации по умолчанию с помощью RegisterDefaults (в вашем случае значение NO для тебя "autoSleep" Ключ), вы гарантируете, что у вас будет значение в этом ключе, либо тот, который установлен в настройках приложения пользователем ... или этот по умолчанию, если пользователь еще не установил для него значение.

Таким образом, это должно решить вашу проблему, так как у вас всегда будет значение для вашей autoSleep Ключ, либо по умолчанию, либо предоставленный пользователем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top