iPadの日時設定が変更されたときに通知を受け取りたいのですが。そのための方法はありますか?
NSDateFormatterを使用して、iPad/iphoneの時間モードが12時間形式か24時間形式かを調べています。NSDateFormatterは多くの時間がかかるようです(時間プロファイリングで見られます)。なので、設定を変更したときだけ使ってみてください。
iPadの日時設定が変更されたときに通知を受け取りたいのですが。そのための方法はありますか?
NSDateFormatterを使用して、iPad/iphoneの時間モードが12時間形式か24時間形式かを調べています。NSDateFormatterは多くの時間がかかるようです(時間プロファイリングで見られます)。なので、設定を変更したときだけ使ってみてください。
あなたは2つの方法を使用してそれを行うことができます:
- (void)applicationSignificantTimeChange:(UIApplication *)application
アプリデリゲートに実装します。のオブザーバーを追加する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で宣言
NSCurrentLocaleDidChangeNotificationのオブザーバーを追加するのはどうですか?Appleによると、「現在のロケール情報が変更されるたびに、キャッシュされた日付と数値のフォーマッタオブジェクトを再作成してください。」
この通知を聞くこともできます。
NSSystemTimeZoneDidChangeNotification