更改iPhone 4上的区域格式不会更改我的应用中的日期和数字格式,直到iPhone关闭再打开(或者应用程序以其他方式终止)。
有没有办法在UIApplicationDelegate :: OnActivated中检测区域格式更改?
我可以在那里重置我的应用程序,但似乎DateTime :: ToShortDateString()仍在使用旧区域设置。是否有可能改变它?
答案 0 :(得分:0)
我宁愿使用NSDate和NSDateFormatter来进行日期转换和用户表示,即使在具有DateTime的Monotouch应用程序下也是如此,因为在我看来,它更适合使用iOS。
使用Monotouch这是件好事,你可以像往常一样依赖iOS SDK。
希望这有帮助。
答案 1 :(得分:0)
Pavel建议使用NSDate和NSDateFormatter部分解决了这个问题:在重新激活程序并更改视图后更改区域格式后,NSDateFormatter会知道新的语言环境。那时,NSLocale.CurrentLocale也返回区域格式的正确语言环境。
当然,任何格式化的日期仍然是旧格式,包括激活程序时显示的格式。要解决此问题,程序必须在重新激活时检测区域格式的更改,并在更改时重置所有视图。从逻辑上讲,这应该在applicationDidBecomeActive事件期间完成。
令人惊讶的是,当调用UIApplicationDelegate :: OnActivated(applicationDidBecomeActive)时,NSLocale.CurrentLocale仍然返回OLD语言环境,并且NSDateFormatter还不知道新格式!
我不确定他们何时会发现新格式。当您切换到另一个视图时,他们知道新格式。 iPhone Mail应用程序会在重新激活时立即检测到新的区域格式,因此应该有一种方法可以在程序激活时检测它。也许在applicationDidBecomeActive之后引发了一个NSCurrentLocaleDidChangeNotification事件,但是这个事件在monotouch中不可用。
有什么建议吗?