2016-04-25 10 views
1

私はEventKitを使ってiOSカレンダーの予定を追加しています。イベントは定期的なイベントです。プログラムのイベントの定期的なルールを設定しています。イベントはカレンダーに正常に追加されていますが、カレンダーに表示される日付は設定した日付と同じではありません。EKEventはEKRecurrenceRuleに従っていません

イベント詳細 enter image description here

経常ルール。イベントが成功し、これをカレンダーに追加された後 enter image description here

は、私がカレンダーエントリ enter image description here

私のイベントは2017年のためのショーされているが、私はそれが2016年だった2017年に終了日を設定していないで得るものです。

iOsカレンダーでイベントを追加しようとしましたが、同じ結果が得られました。

以下は私が使用しているコードです。以下は

/*! 
* This method, called added event to the calendar 
*/ 
- (void)addEventToCalendar 
{ 
    @try { 


     /* Event added to device calendar */ 
     [SINGLETON.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
      if (granted) { 

       [SINGLETON.event_Dateformat setDateFormat:[self dateFormatForSelectedLanguage]]; 
       EKEvent *event = [EKEvent eventWithEventStore:SINGLETON.eventStore]; 
       event.title = _event.eventTitle; 
       event.startDate = [SINGLETON.event_Dateformat dateFromString:eventInfo.eventActualStartDate]; 
       event.endDate = [SINGLETON.event_Dateformat dateFromString:eventInfo.eventActualEndDate]; 
       event.notes = flattenHTML(eventInfo.eventDescription); 

       // Get notification 2 hours before the event start time. 
       [event addAlarm:[EKAlarm alarmWithRelativeOffset:-(2*60*60)]]; 
       [event setCalendar:[SINGLETON.eventStore defaultCalendarForNewEvents]]; 

       /* Here opening Event edit view controller */ 
       EKEventEditViewController *controller = [[EKEventEditViewController alloc] init]; 
       controller.event = event; 
       controller.eventStore = SINGLETON.eventStore; 
       controller.editViewDelegate = self; 

       // Event is recurring mark it is repeat in calendar. 

       // List of days on which a particular event occurs. 
       NSMutableArray <EKRecurrenceDayOfWeek *> *daysOfTheWeek = [[NSMutableArray alloc] init]; 

       if (_event.eventRecurrence && 
        ! [_event.eventDays containsString:@"N/A"]) { 
        for (NSString *dayName in [_event.eventDays componentsSeparatedByString:@","]) { 
         EKRecurrenceDayOfWeek *aDay = [EKRecurrenceDayOfWeek dayOfWeek:[self weekDayForDayName:dayName]]; 
         [daysOfTheWeek addObject:aDay]; 
        } 
       } 

       // When to stop reminding user for the event. 
       EKRecurrenceEnd *endDate = [EKRecurrenceEnd recurrenceEndWithEndDate:event.endDate]; 

       EKRecurrenceRule *repeatRule = [[EKRecurrenceRule alloc] initRecurrenceWithFrequency:[self recurrenceFrequencey:_event.eventType] interval:1 daysOfTheWeek:daysOfTheWeek daysOfTheMonth:nil monthsOfTheYear:nil weeksOfTheYear:nil daysOfTheYear:nil setPositions:nil end:endDate]; 

       event.allDay = NO; 

       event.recurrenceRules = @[repeatRule]; 

       //[event addRecurrenceRule:repeatRule]; 

       dispatch_async(dispatch_get_main_queue(), ^{ 

        //NSError *erroOnSave = nil; 
        // [SINGLETON.eventStore saveEvent:event span:EKSpanFutureEvents commit:YES error:&erroOnSave]; 
        [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; 
        [self presentViewController:controller animated:YES completion:nil]; 
       }); 

      }else{ 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; 

       [SINGLETON alertViewTitle:@"" 
            message:NSLocalizedString(@"Calendar setting alert", nil) 
           cancelTitle:NSLocalizedString(@"OK", nil) 
           doneTitle:nil 
             tag:0]; 
        }); 

      } 
     }]; 

    } 
    @catch (NSException *exception) { 
     DLog(@"%@",exception); 
    } 
} 

私は、デバッガに入るイベントの詳細です:

EKEvent <0x7f94b1f19d00> 
{ 
    EKEvent <0x7f94b1f19d00> 
{ title =  TBW ; 
    location =  ; 
    calendar =  EKCalendar <0x7f94b439d280> {title = Calendar; type = Local; allowsModify = YES; color = #1BADF8;}; 
    alarms =  (
    "EKAlarm <0x7f94b4352fe0> {triggerInterval = -7200.000000}" 
); 
    URL =   (null); 
    lastModified = 2016-04-25 05:18:27 +0000; 
    startTimeZone = Asia/Kolkata (GMT+5:30) offset 19800; 
    startTimeZone = Asia/Kolkata (GMT+5:30) offset 19800 
}; 
    location =  ; 
    structuredLocation = (null); 
    startDate = 2015-09-20 18:30:00 +0000; 
    endDate =  2016-05-31 18:30:00 +0000; 
    allDay =  0; 
    floating =  0; 
    recurrence = EKRecurrenceRule <0x7f94b43e7110> RRULE FREQ=WEEKLY;INTERVAL=1;UNTIL=20160531T183000Z;BYDAY=MO,TH; 
    attendees = (null); 
    travelTime = (null); 
    startLocation = (null); 
}; 

私が間違って使用していますか私は何かが足りないのです何を示唆してください。

答えて

2

私は間違った方法で端部パラメータを設定して、この答え

iOS calendar is behaving strangly

の助けを借りて、この問題の解決策を発見しました。 と同じ日付にする必要があります。を開始してください。時間は異なるはずです。

今私のイベント画面は、この

enter image description here

希望、これはいつか誰か他の人の時間を節約する

のように見えます
関連する問題