3

iPadの日時設定が変更されたときに通知を受け取りたいのですが。そのための方法はありますか?

NSDateFormatterを使用して、iPad/iphoneの時間モードが12時間形式か24時間形式かを調べています。NSDateFormatterは多くの時間がかかるようです(時間プロファイリングで見られます)。なので、設定を変更したときだけ使ってみてください。

4

3 に答える 3

14

あなたは2つの方法を使用してそれを行うことができます:

  1. - (void)applicationSignificantTimeChange:(UIApplication *)applicationアプリデリゲートに実装します。
  2. のオブザーバーを追加するUIApplicationSignificantTimeChangeNotification

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeChanged:) name:UIApplicationSignificantTimeChangeNotification object:nil];

applicationSignificantTimeChange:

時間に大幅な変更があった場合に代理人に通知します。 - (void)applicationSignificantTimeChange:(UIApplication *)application

パラメーター

応用

The delegating application object.

討論

重要な時間変更の例には、深夜の到着、運送業者による時間の更新、および夏時間への変更が含まれます。デリゲートは、このメソッドを実装して、時間を表示する、または時間の変化に敏感なアプリケーションのオブジェクトを調整できます。

このメソッドを呼び出す前に、アプリケーションはUIApplicationSignificantTimeChangeNotification通知も送信して、関心のあるオブジェクトに変更に応答する機会を与えます。

アプリケーションが現在一時停止されている場合、このメッセージは、アプリケーションがフォアグラウンドに戻るまでキューに入れられ、フォアグラウンドに戻ると配信されます。複数の時間変更が発生した場合は、最新のもののみが配信されます。可用性

Available in iOS 2.0 and later.

UIApplication.hで宣言

詳細については、UIApplicationDelegate_Protocolを確認してください

于 2012-12-06T10:37:21.893 に答える
7

NSCurrentLocaleDidChangeNotificationのオブザーバーを追加するのはどうですか?Appleによると、「現在のロケール情報が変更されるたびに、キャッシュされた日付と数値のフォーマッタオブジェクトを再作成してください。」

于 2012-12-06T10:29:53.257 に答える
0

この通知を聞くこともできます。 NSSystemTimeZoneDidChangeNotification

于 2015-01-05T12:50:31.753 に答える