2011-02-06 87 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]