iOS:无法在 didFinishLaunchingWithOptions 中将 UIApplication idleTimerDisabled(英语:UIApplication idleTimerD



我有一个iPad应用程序,用户可以通过首选项中的开关将idleTimerDisabled设置为YES或NO。这部分很好。然而,在应用程序委托的didFinishLaunchingWithOptions方法中初始设置为YES,如果这是应用程序第一次运行,则不起作用(设备会自动休眠)。

我试过先把它设置为NO,然后再设置为YES,正如其他线程中描述的那样,但无济于事。所有其他方面的首选项(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;
    }
}

使用NSUserDefaultsregisterDefaults方法而不是测试objectForKey是否为nil

请参阅相关编程指南中的详细信息。一旦你使用registerDefaults注册了默认值(在你的情况下,NO值为你的"autoSleep"键),你就可以确保你将在这个键中有一个值,要么是由用户在应用程序的设置中设置的,要么是这个默认值,如果用户还没有为它设置一个值。

因此,它应该解决您的问题,因为您将始终拥有autoSleep键的值,无论是默认值还是用户提供的值。

相关内容

  • 没有找到相关文章

最新更新