import EventKit
/**Privacy - Calendars Usage Description 添加日历权限 info.list 配置权限*/
/// 日历添加事件
class KKAddEventClasse: NSObject {/// 添加成功回调typealias SuccessAddEvent = ((_ identifier: String) -> Void)/// 添加失败回调typealias ErrorAddEvent = ((_ error: String) -> Void)// 提前一个小时开始var eventStartDate:Double = 3600// 提前一分钟结束开始var eventEndDate:Double = 60/// 是否添加闹钟 默认添加var isAddAlarm:Bool = true/// 添加闹钟(开始前多少秒)若为正则是开始后多少秒。var addAlarmDate:Double = 60/// 事件商店private  var eventStore = EKEventStore()/// 添加事件/// - Parameter time: "yyyy-MM-dd HH:mm:ss"open func addEventByTime(time:String,successAddEvent:SuccessAddEvent? = nil,errorAddEvent:ErrorAddEvent? = nil) {if time.count != "yyyy-MM-dd HH:mm:ss".count {return}eventStore.requestAccess(to: EKEntityType.event, completion: { [weak self](isAllow, error) inif error != nil {errorAddEvent?("添加异常")return}if isAllow == true {self?.addEvent(time:time,successAddEvent:successAddEvent,errorAddEvent:errorAddEvent)print("允许添加")} else {errorAddEvent?("未允许添加")}})}/// 移除事件 通过事件id/// - Parameter eventIdentifier: 事件唯一标识open func removeEnvent(_ eventIdentifier:String){let event =  eventStore.event(withIdentifier: eventIdentifier)guard event != nil else {return}/// 事件存在do {let _ = try eventStore.remove(event!, span: .thisEvent)} catch {print(error)}}private func addEvent(time:String,successAddEvent:SuccessAddEvent? = nil,errorAddEvent:ErrorAddEvent? = nil) {let event = EKEvent.init(eventStore: eventStore)/// 事件标题event.title = "事件标题"event.calendar = eventStore.defaultCalendarForNewEvents/// 日历显示标题event.calendar.title = "日历显示标题"let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"let date:Date = formatter.date(from: time) ?? Date()// 提前一个小时开始event.startDate = date - eventStartDate/// 提前一分钟结束event.endDate = date - eventEndDateif isAddAlarm {/// 添加闹钟结合(开始前多少秒)若为正则是开始后多少秒。event.addAlarm(EKAlarm(relativeOffset: -60))}do {try eventStore.save(event, span: .thisEvent, commit: true)DispatchQueue.main.async {successAddEvent?(event.eventIdentifier)}} catch  {errorAddEvent?("添加异常")}}}

使用:

 let event = KKAddEventClasse()
/// 添加event.addEventByTime(time: "2021-03-01 16:00:00",successAddEvent: { [weak self](eventIdentifier) inself?.eventIdentifier = eventIdentifier}, errorAddEvent:  {(error) inprint(error)})
/// 删除
event.removeEnvent(eventIdentifier)

Swift 日历添加事件 删除事件相关推荐

  1. Swift 之添加点击事件

    文章目录 1. UIButton 2. UIView 1. UIButton /// 添加点击事件 button.addTarget(self, action: #selector(leftButto ...

  2. Fullcalendar日历使用,包括视图选择、事件插入、编辑事件、事件状态更改、事件添加和删除、事件拖动调整,自定义头部,加入el-popover显示图片、图片预览、添加附件链接等,支持手机显示。

    Fullcalendar这个插件挺好,就是很多方法感觉官方文档也没怎么说,导致上手难度大,而且有些默认事件真的不太友好...废话不多说,先上效果图! 1.效果GIF 1.1 基本按钮功能 1.2  事 ...

  3. android向系统日历添加日程事件(实现闹铃效果,且在app被杀仍能完成)

    向系统日历读写事件有一下步骤 1,有读写日历的权限 2,如果没有日历账户需要先创建日历账户 3,实现日历事件增删改查,提醒功能 一,权限申请 AndroidManifest.xml添加如下权限 < ...

  4. libevent中事件的添加与删除

     前面介绍了libevent中的hash表,在添加事件时,具体是如何操作的呢?事件操作主要是在evmap.c文件中,包含了io事件,signal事件的操作.在事件操作时,分两种情况,一种是利用ha ...

  5. 完美/兼容版添加事件以及删除事件

    IE与现代浏览器添加事件和删除事件的方法存在一定缺陷 现代浏览器自带的方法:addEventListener&removeEventListener IE浏览器自带的方法:attachEven ...

  6. axios如何在nodejs项目里封装_【面经】jq 中 ajax 和 axios 区别,瀑布流布局,添加删除事件...

    [jq 中 ajax 和 axios 区别] jq的ajax 1.本身是针对MVC的编程,不符合现在前端MVVM的浪潮 2.JQuery整个项目太大,单纯使用ajax却要引入整个JQuery不合理 a ...

  7. C# 扩展集合ObservableCollection使集合在添加、删除、值变更后触发事件

    01 - 概述 ObservableCollection继承了INotifyPropertyChanged接口,在属性变更时可以通知界面,当我把ObservableCollection集合绑定到界面的 ...

  8. element分页点击事件_关于原生dom事件添加、删除方法的一些拓展

    引言 这是一个简单的需求,衍生的思考. 昨天QA提了一个富文本优化的需求,当插入视频和音频时,如果用户同时点击了视频.音频,那么其他的视频或者音频应该停止播放,只有最后一个点击的才会是播放状态. 需求 ...

  9. JavaScript学习(二十七)—解决IE以及IE8之前的浏览器下面的添加事件或者删除事件

    JavaScript学习(二十七)-解决IE以及IE8之前的浏览器下面的添加事件或者删除事件 addEventListener和removeEventListener在IE8以及IE浏览器下面不支持, ...

最新文章

  1. Linux学习之setjmp和longjmp函数
  2. SourceChangeWarning:验证集上准确率很高,但是测试集上很低
  3. python基础教程:变量的使用
  4. 51 Nod 1027 大数乘法【Java大数乱搞】
  5. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
  6. html 广告 ins 原理,如何通过HTML DOM元素显示AdSense广告
  7. 关于sqlite多线程
  8. lua 读取lua文件
  9. 液压伺服控制系统设计
  10. 使运行的窗口不在任务栏显示
  11. 红宝书背诵笔记 — 必考词
  12. STM32F407读取ADS1115数据
  13. Maven常用命令_飘云羽逸_新浪博客
  14. 【高数复盘】2.1导数概念
  15. 怎么安装java_怎么安装打印机到电脑步骤
  16. 常用三种写透明度的方法
  17. 手把手教你:图像识别的垃圾分类系统
  18. MATLAB的交互式界面 简易设计
  19. Docker 容器操作 1
  20. 服务器系统fluent,用云服务器算fluent

热门文章

  1. 如何选择O2OA(翱途)开发平台的部署架构?
  2. 周六带小哞去麦当劳,遇到麦当劳叔叔。
  3. 直播软件源码如何实现直播flash插件
  4. 【锐捷无线】隐藏SSID配置
  5. 计算机专业大学生该买什么配置的电脑,大学生适合买什么配置的电脑?
  6. 永磁同步电机(PMSM)
  7. 看图搞懂三极管的三个工作状态/三极管工作原理新讲解
  8. 如何设置卫星系统和频点
  9. SnakeYaml反序列化
  10. 新书推荐 |《Linux系统安全:纵深防御、安全扫描与入侵检测》