Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在“设置”中更改区域格式时,iPhone 4应用程序中的日期格式未更改_Iphone_Xamarin.ios - Fatal编程技术网

在“设置”中更改区域格式时,iPhone 4应用程序中的日期格式未更改

在“设置”中更改区域格式时,iPhone 4应用程序中的日期格式未更改,iphone,xamarin.ios,Iphone,Xamarin.ios,在iPhone 4上更改区域格式不会更改我的应用程序中的日期和数字格式,直到iPhone关闭并再次打开(或者应用程序以另一种方式受到威胁) 是否有方法检测UIApplicationLegate::OnActivated中的区域格式更改 我可以在那里重置我的应用程序,但似乎DateTime::ToSortDateString()仍在使用旧的区域设置。有可能改变这一点吗?我宁愿使用NSDate和NSDateFormatter进行日期转换和用户表示,即使在使用DateTime的Monotouch应用程

在iPhone 4上更改区域格式不会更改我的应用程序中的日期和数字格式,直到iPhone关闭并再次打开(或者应用程序以另一种方式受到威胁)

是否有方法检测UIApplicationLegate::OnActivated中的区域格式更改


我可以在那里重置我的应用程序,但似乎DateTime::ToSortDateString()仍在使用旧的区域设置。有可能改变这一点吗?

我宁愿使用NSDate和NSDateFormatter进行日期转换和用户表示,即使在使用DateTime的Monotouch应用程序下也是如此,因为在我看来,使用iOS更好

这是Monotouch的美妙之处,您可以一如既往地依赖iOS SDK


希望这能有所帮助。

Pavel建议使用NSDate和NSDateFormatter部分解决了问题:当程序重新激活并更改视图时,更改区域格式后,NSDateFormatter会知道新的区域设置。此时,NSLocale.CurrentLocale还返回区域格式的正确区域设置

当然,任何实际格式化的日期仍然是旧格式,包括激活程序时显示的格式。要解决此问题,程序必须在重新激活区域格式时检测区域格式的更改,并在更改时重置所有视图。从逻辑上讲,这应该在ApplicationIDBecMeactive事件期间完成

令人惊讶的是,当调用UIApplicationDelegate::OnActivated(ApplicationIDBecMeactive)时,NSLocale.CurrentLocale仍然返回旧的区域设置,而NSDateFormatter还不知道新的格式

我不确定他们何时意识到新的格式。当您切换到另一个视图时,他们会知道新的格式。iPhone邮件应用程序在重新激活时会即时检测到新的区域格式,因此应该有一种方法在程序激活时检测它。可能在ApplicationIDBecomeActive之后引发NSCurrentLocalEdicChangeNotification事件,但此事件在monotouch中不可用


有什么建议吗?

我假设使用IOS4+,因为应用程序实际上不会终止,所以在重新启动应用程序之前,不会更新任何全局设置(如区域)。或者,您可以将应用程序设置为IOS3.x应用程序,并在退出活动状态时关闭。