Я боролся с этим сегодня, и все сводится к тому, какие настройки Календаря я (и в конечном итоге конечный пользователь) имеет на устройстве.
Лично я синхронизирую свои GMail Календари в формате Exchange -это предотвращает отображение «локальных» календарей.
При манипулировании EKSource, зависящим от настроек пользователя, должен корректно отображаться ваш календарь - это работает для моего сценария Exchange, см. ссылку на класс EKSource для получения дополнительной информации.Попробуйте проверить iCloud!
EKCalendar *calendar = [EKCalendar calendarWithEventStore:self.eventStore];
calendar.title = @"My Calendar";
EKSource *localSource = nil;
EKSource *defaultSource = [self.eventStore defaultCalendarForNewEvents].source;
if (defaultSource.sourceType == EKSourceTypeExchange) {
localSource = defaultSource;
} else {
for (EKSource *source in self.eventStore.sources) {
if (source.sourceType == EKSourceTypeLocal) {
localSource = source;
break;
}
}
}
if (localSource) {
calendar.source = localSource;
} else {
NSLog(@"Error: no local sources available");
}
NSError *error = nil;
BOOL result = [self.eventStore saveCalendar:calendar commit:YES error:&error];
if (result) {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:calendar.calendarIdentifier forKey:@"Calendar"];
[userDefaults synchronize];
NSLog(@"Saved calendar to event store");
} else {
NSLog(@"Error saving Calendar");
}