Swift 日历添加事件 删除事件
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 日历添加事件 删除事件相关推荐
- Swift 之添加点击事件
文章目录 1. UIButton 2. UIView 1. UIButton /// 添加点击事件 button.addTarget(self, action: #selector(leftButto ...
- Fullcalendar日历使用,包括视图选择、事件插入、编辑事件、事件状态更改、事件添加和删除、事件拖动调整,自定义头部,加入el-popover显示图片、图片预览、添加附件链接等,支持手机显示。
Fullcalendar这个插件挺好,就是很多方法感觉官方文档也没怎么说,导致上手难度大,而且有些默认事件真的不太友好...废话不多说,先上效果图! 1.效果GIF 1.1 基本按钮功能 1.2 事 ...
- android向系统日历添加日程事件(实现闹铃效果,且在app被杀仍能完成)
向系统日历读写事件有一下步骤 1,有读写日历的权限 2,如果没有日历账户需要先创建日历账户 3,实现日历事件增删改查,提醒功能 一,权限申请 AndroidManifest.xml添加如下权限 < ...
- libevent中事件的添加与删除
前面介绍了libevent中的hash表,在添加事件时,具体是如何操作的呢?事件操作主要是在evmap.c文件中,包含了io事件,signal事件的操作.在事件操作时,分两种情况,一种是利用ha ...
- 完美/兼容版添加事件以及删除事件
IE与现代浏览器添加事件和删除事件的方法存在一定缺陷 现代浏览器自带的方法:addEventListener&removeEventListener IE浏览器自带的方法:attachEven ...
- axios如何在nodejs项目里封装_【面经】jq 中 ajax 和 axios 区别,瀑布流布局,添加删除事件...
[jq 中 ajax 和 axios 区别] jq的ajax 1.本身是针对MVC的编程,不符合现在前端MVVM的浪潮 2.JQuery整个项目太大,单纯使用ajax却要引入整个JQuery不合理 a ...
- C# 扩展集合ObservableCollection使集合在添加、删除、值变更后触发事件
01 - 概述 ObservableCollection继承了INotifyPropertyChanged接口,在属性变更时可以通知界面,当我把ObservableCollection集合绑定到界面的 ...
- element分页点击事件_关于原生dom事件添加、删除方法的一些拓展
引言 这是一个简单的需求,衍生的思考. 昨天QA提了一个富文本优化的需求,当插入视频和音频时,如果用户同时点击了视频.音频,那么其他的视频或者音频应该停止播放,只有最后一个点击的才会是播放状态. 需求 ...
- JavaScript学习(二十七)—解决IE以及IE8之前的浏览器下面的添加事件或者删除事件
JavaScript学习(二十七)-解决IE以及IE8之前的浏览器下面的添加事件或者删除事件 addEventListener和removeEventListener在IE8以及IE浏览器下面不支持, ...
最新文章
- Linux学习之setjmp和longjmp函数
- SourceChangeWarning:验证集上准确率很高,但是测试集上很低
- python基础教程:变量的使用
- 51 Nod 1027 大数乘法【Java大数乱搞】
- 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
- html 广告 ins 原理,如何通过HTML DOM元素显示AdSense广告
- 关于sqlite多线程
- lua 读取lua文件
- 液压伺服控制系统设计
- 使运行的窗口不在任务栏显示
- 红宝书背诵笔记 — 必考词
- STM32F407读取ADS1115数据
- Maven常用命令_飘云羽逸_新浪博客
- 【高数复盘】2.1导数概念
- 怎么安装java_怎么安装打印机到电脑步骤
- 常用三种写透明度的方法
- 手把手教你:图像识别的垃圾分类系统
- MATLAB的交互式界面 简易设计
- Docker 容器操作 1
- 服务器系统fluent,用云服务器算fluent