アプリでアラームの概念を使用しているので、uilocalnotificationsとdatepickerviewを使用して時間を設定しました。私の日付ピッカーは時間のみを表示します。
私はコードを使用しました、
- (void)viewDidLoad {
datePicker.date = [NSDate date];
}
datepickerの時刻は現在の日付として設定されますが、2番目の値は0に設定されません。これは、viewdidloadedの2番目の値、つまり、たとえば12:30:14に移動します。
- (void)scheduleNotification {
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {
UILocalNotification *notif = [[cls alloc] init];
notif.fireDate = [datePicker date];
notif.timeZone = [NSTimeZone defaultTimeZone];
notif.alertBody = @"My Alarm";
notif.alertAction = @"Show";
notif.soundName = @"Show.mp3";
notif.applicationIconBadgeNumber = 1;
NSDictionary *userDict = [NSDictionary dictionaryWithObject:reminderText.text
forKey:kRemindMeNotificationDataKey];
notif.userInfo = userDict;
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
[notif release];
}
アラームはwrtdatepickerを再生するように設定されています
コードを使用して、datepickerの2番目を0に設定しようとしました
- (void)viewDidLoad {
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSDate *reqdate = [self.datePicker date];
NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit )
fromDate:reqdate];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
fromDate:reqdate];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setHour:[timeComponents hour]];
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents 0]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
datePicker.date = itemDate;
}
しかし、突然アラームを設定すると、通知機能がアラームを鳴らします。ここで何が起こっているのかわかりませんでした。