3

または「ホームボタンが押されたイベントをシミュレートする方法は?」

iPhoneアプリを再起動する必要があり、プログラムを終了したいので、ユーザーはそれを起動するだけで済みます。

ユーザーがホームボタンを押して終了した場合のように、単にexit(0)いくつかの変更を使用した場合、変更は保存されません。

言語変更に必要な再起動。

関連コード:

- (void)onChangeLanguage: (id)sender {
    NSArray *lang = [NSArray arrayWithObjects:((Whatever *)sender).newLanguage, nil];
    [[NSUserDefaults standardUserDefaults] setObject:lang forKey:@"AppleLanguages"];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
    NSString *currentLanguage = [languages objectAtIndex:0];

    NSLog(@"Current language: %@", currentLanguage);
    // ***
}   

ユーザーがホームボタンを使用して再起動すると、言語が変更されます。

// ***がに置き換えられた場合exit(0)、言語は変更されません。

4

3 に答える 3

7

呼び出しexit(0)は、コードからプログラムを終了する唯一の合法的な(ただし、強くお勧めしません)方法です。
考えられる回避策として、閉じることができないボタンなしでUIAlertViewを表示し(ユーザーにプログラムを手動で終了させる)、変更を適用するためにそれを実行する必要があることをユーザーに通知できます。

于 2009-11-10T12:49:34.957 に答える
5

を呼び出すのはまったく問題ないと思います。それを行う前exitに呼び出し[[NSUserDefaults standardUserDefaults] synchronize]てください。Apple Documentationsynchronizeでメソッドについて読むことができます:

このメソッドは定期的に自動的に呼び出されるため、このメソッドは、自動同期を待てない場合 (たとえば、アプリケーションが終了しようとしている場合)、またはユーザーのデフォルトをディスク上のものに更新したい場合にのみ使用してください。何も変更していません。

于 2009-11-10T14:07:20.933 に答える
3

プライベート API 呼び出しもあることに注意してください。もちろん、プライベート API の使用に関する通常の警告はすべて適用されます。

[[UIApplication sharedApplication] 終了];

于 2009-11-10T14:02:47.347 に答える