具体代码如下(代码来着网路):
/*
1.0版本示例
初始建立 将事件添加到系统日历中,并且添加到提醒事项中
*/
/*代码示例
NSDate*startData=[NSDate dateWithTimeIntervalSinceNow:10];
NSDate*endDate=[NSDate dateWithTimeIntervalSinceNow:20];
//设置事件之前多长时候开始提醒
float alarmFloat=-5;
NSString*eventTitle=@"提醒事件标题";
NSString*locationStr=@"提醒副标题";
//isReminder 是否写入提醒事项
[ZCActionOnCalendar saveEventStartDate:startData endDate:endDate alarm:alarmFloat eventTitle:eventTitle location:locationStr isReminder:YES];
2014.4.29
//注意 在参数第十八行需要设置不同的参数,然后进行判断是事件提醒还是日历事件
//EKEntityMaskEvent提醒事项参数(该参数只能真机使用) EKEntityTypeEvent日历时间提醒参数
*/
#import <Foundation/Foundation.h>
@interface ZCActionOnCalendar : NSObject
+ (void)saveEventStartDate:(NSDate*)startData endDate:(NSDate*)endDate alarm:(float)alarm eventTitle:(NSString*)eventTitle location:(NSString*)location isReminder:(BOOL)isReminder;
@end
#import "ZCActionOnCalendar.h"
#import <EventKit/EventKit.h>
@implementation ZCActionOnCalendar
+ (void)saveEventStartDate:(NSDate*)startData endDate:(NSDate*)endDate alarm:(float)alarm eventTitle:(NSString*)eventTitle location:(NSString*)location isReminder:(BOOL)isReminder{
//事件市场
EKEventStore *eventStore = [[EKEventStore alloc] init];
//6.0及以上通过下⾯面⽅方式写⼊入事件
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
//等待用户是否同意授权日历
//EKEntityMaskEvent提醒事项参数(该参数只能真机使用) EKEntityTypeEvent日历时间提醒参数
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (error)
{
}else if (!granted)
{
//被⽤用户拒绝,不允许访问⽇日历
}else{
//事件保存到⽇日历
//创建事件
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = eventTitle;
event.location = location;
//设定事件开始时间
//[NSDate dateWithTimeIntervalSinceNow:10];
event.startDate=startData;
//设定事件结束时间
//[NSDate dateWithTimeIntervalSinceNow:20];
event.endDate=endDate;
//添加提醒可以添加多个,设定事件多久以前开始提醒
// event.allDay = YES;
//在事件前多少秒开始事件提醒-5.0f
[event addAlarm:[EKAlarm alarmWithRelativeOffset:alarm]];
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
NSLog(@"保存成功");
//是否写入提醒事项,提醒事项为iOS原生自带的,但是模拟器没有的
if (isReminder) {
EKCalendar * iDefaultCalendar = [eventStore defaultCalendarForNewReminders];
EKReminder *reminder=[EKReminder reminderWithEventStore:eventStore];
reminder.calendar=[eventStore defaultCalendarForNewReminders];
reminder.title=eventTitle;
reminder.calendar = iDefaultCalendar;
EKAlarm *alarm=[EKAlarm alarmWithAbsoluteDate:[NSDate dateWithTimeIntervalSinceNow:-10]];
[reminder addAlarm:alarm];
NSError *error=nil;
[eventStore saveReminder:reminder commit:YES error:&error];
if (error) {
NSLog(@"error=%@",error);
}
}
}
});
}];
}else{
//4.0和5.0通过下述⽅方式添加无需判断用户是否同意访问日历
//事件保存到⽇日历
//创建事件
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = eventTitle;
event.location = location;
//设定事件开始时间
//[NSDate dateWithTimeIntervalSinceNow:10];
event.startDate=startData;
//设定事件结束时间
//[NSDate dateWithTimeIntervalSinceNow:20];
event.endDate=endDate;
//添加提醒可以添加多个,设定事件多久以前开始提醒
// event.allDay = YES;
//在事件前多少秒开始事件提醒-5.0f
[event addAlarm:[EKAlarm alarmWithRelativeOffset:alarm]];
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
NSLog(@"保存成功");
//是否写入提醒事项,提醒事项为iOS原生自带的,但是模拟器没有的
if (isReminder) {
EKCalendar * iDefaultCalendar = [eventStore defaultCalendarForNewReminders];
EKReminder *reminder=[EKReminder reminderWithEventStore:eventStore];
reminder.calendar=[eventStore defaultCalendarForNewReminders];
reminder.title=eventTitle;
reminder.calendar = iDefaultCalendar;
EKAlarm *alarm=[EKAlarm alarmWithAbsoluteDate:[NSDate dateWithTimeIntervalSinceNow:-10]];
[reminder addAlarm:alarm];
NSError *error=nil;
[eventStore saveReminder:reminder commit:YES error:&error];
if (error) {
NSLog(@"error=%@",error);
}
}
}
}
需要的类库:UIEventKit.framework