2011-01-31 17 views
1

iPhone 4の地域形式を変更しても、iPhoneの電源を入れ直す(またはアプリが別の方法でterrminated)。設定で地域形式を変更すると、iPhone 4アプリの日付形式が変更されない

UIApplicationDelegate :: OnActivatedでリージョンフォーマットの変更を検出する方法はありますか?

私はそこで私のアプリケーションをリセットすることができますが、DateTime :: ToShortDateString()はまだ古い領域の設定を使用しているようです。それを変更することは可能ですか?

+0

私はIOS4 +では、アプリケーションが実際に終了しないため、アプリケーションが再起動されるまで、どのようなグローバル設定(地域など)も更新されないと想定します。オプションで、IOS3.xアプリとして動作するようにアプリを設定し、アクティブなステータスを辞めるときに閉じることができます。 – jbehren

答えて

0

NSDateとNSDateFormatterを使用すると、プログラムの再起動時に領域フォーマットを変更してビューを変更すると、NSDateFormatterは新しいロケールを認識します。その時、NSLocale.CurrentLocaleはリージョンフォーマットの正しいロケールも返します。

もちろん、まだフォーマットされていた日付は、プログラムがアクティブになったときに表示される形式を含め、以前の形式のままです。この問題を解決するには、プログラムが再アクティブ化されたときに領域フォーマットの変更を検出し、変更された場合はすべてのビューをリセットする必要があります。論理的には、これはapplicationDidBecomeActiveイベント中に行う必要があります。

は驚くべきことに、UIApplicationDelegate :: OnActivated(applicationDidBecomeActive)が呼び出されたときに、NSLocale.CurrentLocaleはまだOLDロケールを返し、NSDateFormatterはまだ新しいフォーマットを認識しません!

新しいフォーマットを認識するのはわかりません。別のビューに変更すると、新しいフォーマットが認識されます。 iPhone Mailアプリは、再アクティブ化時に新しい領域フォーマットを即座に検出するので、プログラム起動時にそれを検出する方法があります。 NSCurrentLocaleDidChangeNotificationイベントがapplicationDidBecomeActiveの後に生成されている可能性がありますが、このイベントはモノトゥッチでは利用できません。

提案がありますか?

0

DateTimeを使用したMonotouchアプリケーションでも、日付変換とユーザー表現にNSDateとNSDateFormatterを使用します。これは、iOSのほうが気に入っているようです。

これはモノトゥッチではきれいですが、いつものようにいつもiOS SDKに頼ることができます。

これが役に立ちます。

関連する問題