0

ユーザーが設定のスイッチを介してidleTimerDisabledをYESまたはNOに設定できるiPadアプリがあります。その部分はうまく機能します。ただし、アプリを初めて実行する場合、アプリ デリゲートの 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;
    }
}
4

1 に答える 1

1

objectForKey が nil かどうかをテストする代わりに、registerDefaultsメソッドを使用します。NSUserDefaults

詳細については、関連するプログラミング ガイドを参照してください。registerDefaults を使用してデフォルト値を登録すると (この場合はNOキー"autoSleep"の値)、このキーに、ユーザーがアプリケーションの設定で設定した値、またはこのデフォルトの値があることが保証されます。ユーザーはまだ値を設定していません。

autoSleepしたがって、デフォルトまたはユーザー提供のいずれかのキーの値が常にあるため、問題は解決するはずです。

于 2011-09-08T23:53:06.340 に答える