3

我想在 ipad 的日期时间设置更改时收到通知。有什么办法吗?

我正在使用 NSDateFormatter 来查找 iPad/iphone 时间模式是 12 小时还是 24 小时格式。NSDateFormatter 似乎需要很多时间(在时间分析中看到)。因此,我想仅在更改设置时检查使用它。

4

3 回答 3

14

您可以使用以下两种方式进行操作:

  1. - (void)applicationSignificantTimeChange:(UIApplication *)application在您的应用委托中实现。
  2. 添加观察者UIApplicationSignificantTimeChangeNotification

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeChanged:) name:UIApplicationSignificantTimeChangeNotification object:nil];

applicationSignificantTimeChange:

当时间发生重大变化时告诉委托人。 - (void)applicationSignificantTimeChange:(UIApplication *)application

参数

应用

The delegating application object.

讨论

重大时间变化的示例包括午夜的到来、运营商的时间更新以及夏令时的变化。委托可以实现此方法来调整应用程序中显示时间或对时间变化敏感的任何对象。

在调用此方法之前,应用程序还会发布 UIApplicationSignificantTimeChangeNotification 通知,让感兴趣的对象有机会响应更改。

如果您的应用程序当前处于挂起状态,则此消息将排队等待您的应用程序返回到前台,此时它会被传递。如果发生多个时间更改,则仅传送最近的一个。可用性

Available in iOS 2.0 and later.

在 UIApplication.h 中声明

更多检查UIApplicationDelegate_Protocol

于 2012-12-06T10:37:21.893 回答
7

为NSCurrentLocaleDidChangeNotification添加一个观察者怎么样?根据 Apple 的说法,“只要当前区域设置信息发生更改,就重新创建任何缓存的日期和数字格式化程序对象。”

于 2012-12-06T10:29:53.257 回答
0

您可能还想收听此通知: NSSystemTimeZoneDidChangeNotification

于 2015-01-05T12:50:31.753 回答