Вот как я справился с этим ... с помощью EKEventEditViewController!
Первое:
@import EventKitUI;
В самом начале файла .m. Затем установите EKEventEditViewDelegate
Затем, когда вы хотите добавить событие, используйте следующий метод:
- (IBAction)addToCalendar:(id)sender {
EKEventStore *eventStore = [[EKEventStore alloc] init];
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
// the selector is available, so we must be on iOS 6 or newer
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (error)
{
NSLog(@"%@", error);
// display error message here
}
else if (!granted)
{
NSLog(@"%@ acce sdenied", error);
// display access denied error message here
}
else
{
EKEvent *event = [EKEvent eventWithEventStore: eventStore];
event.title = nom;
event.location = adresse;
// Set the start and end dates to the event.
event.startDate = startDate;
event.endDate = endDate; //
EKEventEditViewController *eventViewController = [[EKEventEditViewController alloc] init];
eventViewController.event = event;
eventViewController.eventStore=eventStore;
eventViewController.editViewDelegate = self;
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
[eventViewController setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:eventViewController animated:YES completion:NULL];
}
});
}];
}
}
Наконец, добавьте этот метод делегата обрабатывать действие завершения:
-(void)eventEditViewController:(EKEventEditViewController *)controller
didCompleteWithAction:(EKEventEditViewAction)action {
NSError *error;
switch (action) {
case EKEventEditViewActionCancelled:
// User tapped "cancel"
NSLog(@"Canceled");
break;
case EKEventEditViewActionSaved:
NSLog(@"Saved");
[controller.eventStore saveEvent:controller.event span: EKSpanFutureEvents error:&error];
[calendarBouton setTitle:@"Ajouté!" forState:UIControlStateDisabled];
calendarBouton.enabled = NO;
break;
case EKEventEditViewActionDeleted:
// User tapped "delete"
NSLog(@"Deleted");
break;
default:
NSLog(@"Default");
break;
}
[self dismissViewControllerAnimated:YES completion:nil];
}
Спасибо для вашей помощи! Не могли бы вы правильно указать код? Трудно понять, что на самом деле находится в коде или нет! Спасибо alot –
Откуда возникает EventManager? –
EventManager - это класс NSObject, здесь я объявляю объект EKEventStore. EventManager.h @property (неатомный, сильный) EKEventStore * eventStore; EventManager.m - (instancetype) инициализации { себя = [супер] инициализации; if (self) { eventStore = [[EKEventStore alloc] init]; } return self; } –