美文网首页
日历提醒事项

日历提醒事项

作者: astring | 来源:发表于2021-02-22 08:54 被阅读0次

1.需要在info.plist添加访问日历的权限:Privacy - Calendars Usage Description

2.事件添加

新增事件

#import <EventKit/EKEventStore.h>
#import <EventKit/EKEvent.h>
#import <EventKit/EKAlarm.h>

-(void)createWithTitle:(NSString *)title
              location:(NSString *)location
                  star:(NSDate *)star
                   end:(NSDate *)end
                allday:(BOOL)all
                alarms:(NSArray *)alarms
{
    EKEventStore *evenstore = [[EKEventStore alloc]init];
    if ([evenstore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
        [evenstore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
            dispatch_async(dispatch_get_main_queue(), ^{
                if (error) {
                    NSLog(@"error : %@",error);
                } else if (!granted) {
                    NSLog(@"未有日历访问权限");
                } else {
                    EKEvent *event = [EKEvent eventWithEventStore:evenstore];
                    event.title = title;
                    event.location = location;
                    NSDateFormatter *tempformatter = [[NSDateFormatter alloc]init];
                    [tempformatter setDateFormat:@"dd.MM.yyyy HH:mm"];
                    event.startDate = star;
                    event.endDate = end;
                    event.allDay = all;
                    if (alarms.count>0) {
                        for (NSString *timestring in alarms) {
                            [event addAlarm:[EKAlarm alarmWithRelativeOffset:timestring.integerValue]];
                        }
                    }
                    [event setCalendar:[evenstore defaultCalendarForNewEvents]];
                    NSError *err;
                    [evenstore saveEvent:event span:EKSpanThisEvent error:&err];
                    NSLog(@"添加事件 error : %@",err);
                }
            });
        }];
    }
}

2.事件编辑操作

根据日期删除已存在的事件

-(void)deleteEventWithStar:(NSDate *)star
                       end:(NSDate *)end
{
    EKEventStore *evenstore = [[EKEventStore alloc]init];
    NSArray <EKCalendar*> *calendars = [evenstore calendarsForEntityType:EKEntityTypeEvent];
    NSLog(@"calendars : %@",calendars);
    if (calendars.count<=0) {
        NSLog(@"no calendar here...");
        return;
    }
    NSPredicate *predicate = [evenstore predicateForEventsWithStartDate:star endDate:end calendars:calendars];
    NSArray <EKEvent *> *events = [evenstore eventsMatchingPredicate:predicate];
    NSLog(@"events : %@",events);
    if (events.count<=0) {
        NSLog(@"no event here...");
        return;
    }
    for (EKEvent *event in events) {
        NSError *removeErr;
        [evenstore removeEvent:event span:EKSpanThisEvent error:&removeErr];
        NSLog(@"remove event err : %@",removeErr);
    }
}

3.使用

增加提醒事件

-(void)addEvent
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
    NSDate *stardate = [formatter dateFromString:@"2021-02-20 08:00"];
    NSDate *enddate = [formatter dateFromString:@"2021-02-20 08:01"];
    [[Events shareEvents] createWithTitle:@"测试-------还款提醒" location:@"到期还款" star:stardate end:enddate allday:NO alarms:@[@"-120"]];
}

删除某段时间的提醒事件

-(void)deleteEvents
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
    NSDate *stardate = [formatter dateFromString:@"2021-02-20 08:00"];
    NSDate *enddate = [formatter dateFromString:@"2021-02-20 08:01"];
   [[Events shareEvents]deleteEventWithStar:stardate end:enddate];
}

相关文章

  • 日历提醒事项

    1.需要在info.plist添加访问日历的权限:Privacy - Calendars Usage Descri...

  • EventKit 日历事件

    EventKit 框架 此框架可以访问手机系统日历和提醒事项APP的数据,用此框架可以添加日历事件和提醒事项。 i...

  • swift版-系统的日历和提醒事项的调用与交互

    一、打开系统的app 二、向系统的日历或提醒事项中添加信息:1、向日历中添加事件: 2、向事项中添加事件: 三、查...

  • iOS读,写,删除系统提醒事项和日历事件(二)

    上篇主要说了日历事件,这篇这要说提醒事项。提醒事项数据可以设置的内容比较少,所有操作起来也相对简单。废话不多说。 ...

  • 2018-09-02

    日历: 本周是否完成重要的日历事项,有没有爽约或变更重要的日历事项? 日历事项已完成,没有爽约和更改的重要日历事项...

  • 08122018周反思

    日历: 本周是否完成重要的日历事项,有没有爽约或变更重要的日历事项? 日历事项已完成,没有爽约和更改的重要日历事项...

  • 2018-08-18

    日历: 本周是否完成重要的日历事项,有没有爽约或变更重要的日历事项? 日历事项已完成,没有爽约和更改的重要日历事项...

  • 09092018周检视

    日历: 本周是否完成重要的日历事项,有没有爽约或变更重要的日历事项? 日历事项已完成,没有爽约和更改的重要日历事项...

  • 08052018周检视

    日历: 本周是否完成重要的日历事项,有没有爽约或变更重要的日历事项? 日历事项已完成,没有爽约和更改的重要日历事项...

  • 2018年6月25日~7月1日 26/52 易效能践行之周检

    日历 本周我是否完成重要的日历事项,有没有爽约或变更固定事项? 按计划进行日历事项。(我的日历事项很少) 清单 本...

网友评论

      本文标题:日历提醒事项

      本文链接:https://www.haomeiwen.com/subject/llaoxltx.html