我的应用程序可以在设备时区更改时收到通知吗?我希望在我的应用程序是前台时收到通知。 NSTimezone对我不起作用,因为我必须不断检查时区。
答案 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];