获取有关iOS时区变化的通知

时间:2013-05-03 06:54:18

标签: iphone ios objective-c ipad ios5

我的应用程序可以在设备时区更改时收到通知吗?我希望在我的应用程序是前台时收到通知。 NSTimezone对我不起作用,因为我必须不断检查时区。

2 个答案:

答案 0 :(得分:24)

UIApplicationDelegate有一个名为applicationSignificantTimeChange:的方法,当时间发生重大变化时会被调用。

文档中列出的示例是:

  

重要时间变化的示例包括午夜的到来,承运人更新时间以及夏令时的变化

但我认为时区变化算是一个重要的时间变化。

文档还说,如果时间发生变化,当你的应用程序在后台时,你会在前往前台时获得它

  

如果您的应用程序当前已暂停,则此消息将排队,直到您的应用程序返回到前台,此时它将被传递。

您还可以收听要发布的UIApplicationSignificantTimeChangeNotification,以便在应用中的其他任何位置获取相同的信息。

答案 1 :(得分:14)

听听 NSSystemTimeZoneDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeZoneChanged) name: NSSystemTimeZoneDidChangeNotification object:nil];

请记住取消注册,例如在dealloc方法中。

[[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemTimeZoneDidChangeNotification object:nil];