【问题标题】:How to set specific alarm in EKEvent in ios calendar?如何在 ios 日历中的 EKEvent 中设置特定警报?
【发布时间】:2017-05-19 13:30:29
【问题描述】:

在 EKEvent 中,一旦我没有为事件设置任何警报,我就会检查日历应用程序,它会在 5 分钟前向我显示警报。为什么 ?没看懂。

我的要求

  • 我想设置两个警报,1警报在给定的特定时间之前 比如“5分钟、15分钟、30分钟、1小时”。 2 秒提醒 想要设置事件时间。

  • 在搜索如何在事件中添加警报的基础上,我为添加事件做了一些事情,但它不起作用。很多尝试,但在日历中没有效果。

  • 请参阅下面的代码,我根据我的要求尝试了两种方式,我使用开关盒,甚至尝试添加单个警报。两者都不起作用。

我该怎么办?

提出任何建议、解决方案、想法

谢谢

       let event:EKEvent = EKEvent(eventStore: appleEventStore)

        event.title = tempDescription
        event.startDate = startDate as Date
        event.endDate = endDate as Date
        event.isAllDay = false
        event.notes = "This is a note"
        event.calendar = cal
        do {
            try appleEventStore.save(event, span: .thisEvent)
            print("events added with dates:")

            let alarm = EKAlarm(relativeOffset: 600)
            event.addAlarm(alarm)

            switch tempalertid {

            case "1":
                let aInterval: TimeInterval = -5 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                event.addAlarm(alaram)
            case "2":
                let aInterval: TimeInterval = -15 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                event.addAlarm(alaram)
            case "3":
                let aInterval: TimeInterval = -30 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                event.addAlarm(alaram)
            case "4":
                let aInterval: TimeInterval = -1 * 60 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                event.addAlarm(alaram)

            default:
                break
            }
            if event.hasAlarms {
                print("yes")

            }
            else {
                print("no")
            }

        } catch let e as NSError {
            print(e.description)
            return
        }
        print("Saved Event")

【问题讨论】:

    标签: ios swift icalendar alarm ekevent


    【解决方案1】:
        let event:EKEvent = EKEvent(eventStore: appleEventStore)
        event.title = tempDescription
        event.startDate = startDate as Date
        event.endDate = endDate as Date
        event.isAllDay = false
        event.notes = "This is a note"
        event.calendar = cal
    
    
        switch tempalertid {
            case "1":
                let aInterval: TimeInterval = -5 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                 event.alarms = [alaram]
            case "2":
                let aInterval: TimeInterval = -15 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                 event.alarms = [alaram]
            case "3":
                let aInterval: TimeInterval = -30 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                 event.alarms = [alaram]
            case "4":
                let aInterval: TimeInterval = -1 * 60 * 60
                let alaram = EKAlarm(relativeOffset: aInterval)
                event.alarms = [alaram]
    
            default:
                break
            }
    
        do {
            try appleEventStore.save(event, span: .thisEvent)
            print("events added with dates:")
    
        } catch let e as NSError {
            print(e.description)
            return
        }
        print("Saved Event")
    

    【讨论】:

      【解决方案2】:

      我有两个想法:

      首先,您要在创建警报之前保存您的事件。

      其次,.alarm 属性是一个警报数组,您尝试单独保存每个警报。

      我有一个代码示例供您查看,不幸的是,它是用 Objective-C 编写的。

      EKEvent *event = [EKEvent eventWithEventStore:store];
      EKAlarm *alarmForOneDayBeforeAppointment = [[EKAlarm alloc] init];
      alarmForOneDayBeforeAppointment.absoluteDate = [self modifyDate:eventDate
                                                             withUnit:NSCalendarUnitDay
                                                                       andQuantity:-1];
      event.alarms = @[alarmForOneDayBeforeAppointment];
      [store saveEvent:event span:EKSpanThisEvent error:&err];
      

      将 event.alarm 设置为数组后尝试保存事件。

      【讨论】:

      • 你知道帮我在事件上添加自定义频率,就像我想添加每周频率一样,用户可以选择多天,比如用户可以在每周一和周五添加事件,也可以是全天或者只有一个特定的日子,比如星期六。我有选定日期的数组。
      • 打开我的新问题链接:stackoverflow.com/q/44111168/6638267
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多