20

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

4

2 回答 2

27

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

文档中列出的示例是:

重大时间变化的示例包括午夜的到来、运营商的时间更新以及夏令时的变化

但我认为时区变化算作重大的时间变化。

文档还说,如果在您的应用程序处于后台时发生时间变化,您将在您转到前台时得到它

如果您的应用程序当前处于挂起状态,则此消息将排队等待您的应用程序返回到前台,此时它会被传递。

您还可以收听UIApplicationSignificantTimeChangeNotification发布以在您的应用程序的其他任何地方获取相同的信息。

于 2013-05-03T07:05:53.910 回答
21

只是听 NSSystemTimeZoneDidChangeNotification

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

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

[[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemTimeZoneDidChangeNotification object:nil];
于 2015-01-05T12:53:42.967 回答