2011-02-06 40 views
0

我一直在尝试使用UILocalNotification并将时区设置为其他时区以外的默认值。UILocalNotification与非默认时区

目的是做类似的事情: - 用户将安排时间和时区的警报 - 当该时区变为指定时间时显示警报。

在更多口头描述中,假设我住在LosAngeles,我的gf在芝加哥。我想在芝加哥早上7点设置警报,平日。

对于一个提醒,我可以做没有时区,做绝对时间。但我想允许用户设置重复标志,在这种情况下,我似乎无法做到 - 我尝试将localnotification的timezone属性设置为芝加哥,如上例所示,但本地通知不会触发。

我登录时的序列化过程中uinocalnotification,这里是一个输出:

"<UIConcreteLocalNotification: 0xfb25a50>{fire date = 2011-02-06 06:02:00 -0800, time zone = America/Chicago (CST) offset -21600, repeat interval = 16, next fire date = 2011-02-06 08:02:00 -0800}" 

我设置firedate为上午9时02分芝加哥绝对时间和时区以CST - 和日志也提到火日期的确我的当地时间是06:02。然而,没有任何反应。此外,下一个火灾日期很奇怪,因为它应该是+1天,而不是+2小时。

下面是我设置它的方法: Class classUILocalNotification = NSClassFromString(@“UILocalNotification”);

if (classUILocalNotification != nil) { 
    id note = [[classUILocalNotification alloc] init]; 

    NSString *body = @"body message";  
    switch (repeatflag) { 
     case 1: [note setRepeatInterval:NSDayCalendarUnit]; break; 
     case 2: [note setRepeatInterval:NSWeekdayCalendarUnit]; break; 
     case 3: [note setRepeatInterval:NSWeekCalendarUnit]; break; 
     case 4: [note setRepeatInterval:NSMonthCalendarUnit]; break; 
     case 5: [note setRepeatInterval:NSYearCalendarUnit]; break; 
     default: break; 
    } 
    [note setFireDate:dt]; 
    [note setAlertBody:body]; 
    [note setTimeZone:timezone];     
    [note setHasAction:NO]; 
} 

这似乎是一些未知的行为。任何人都有更好的方式来实现我想要做的事情? 谢谢!

+0

发布一些更多的代码,以便我们可以检查确切的问题是! – KingofBliss 2011-02-07 15:42:10

回答

0

使用非本地时区时,似乎存在UILocalNotification的错误。第一件事发生在正确的日期和时间以及时区。但是,后续事件会在当地时区触发给定的日期和时间,而不是在setTimeZone方法中设置的日期和时间。 [iOS 6.1]