【问题标题】:How set no alarm in EKEvent in calendar如何在日历中的EKEvent中设置不报警
【发布时间】:2012-12-11 12:24:19
【问题描述】:

当我为日历创建新的EKEvent 时,我注意到会自动添加活动当天的警报广告9,我如何设置不alarm?我试过这样:

EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.titile = @"This is an event";
event.calendar = calendar;
event.alarms = nil; //in this way don't work...

但不工作,在日历中我看到警报你怎么看:

任何人都知道我如何在没有警报的情况下添加 EKEvent?

【问题讨论】:

  • 你能解释一下并写一些代码吗
  • 我已经编辑了问题...
  • 不确定这个具体情况是什么问题,很久以前就问过了。然而仍然存在问题,我发现了这个问题。原来是这个问题:我使用 Mac 上的日历应用程序检查了我在手机上创建的事件。该应用程序显示前一天 9:00 的幻影警报,但实际上并不存在。例如,另一个错误是,当您在事件发生前 24 小时设置警报时,它会将其显示为 48 小时前。我花了几个小时试图修复我的应用程序中不存在的错误,直到我在手机和浏览器中检查了我的事件,一切都正确。

标签: iphone ios ekevent


【解决方案1】:

你应该设置一个没有警报的空NSArray,像这样:

EKEvent *event = // whatever...
[event setAlarms:[NSArray array]];

【讨论】:

  • 然后再试一次,因为这是正确的方法。它来自我的实时应用程序。
  • 我又试了一次,但没有用...我也有方法 predicateForEventsWithStartDate:endDate:calendars: that don't find me event...
  • 你能准确描述出什么问题吗?您在原始帖子中的评论// in this way don't work... 是什么意思?这是什么意思?
  • 你需要知道这个方法-predicateForEventsWithStartDate:endDate:calendars:,它从开始日期起只有4年的时间间隔。如果您的间隔超过 4 年,例如2000-2010(10 年)您必须以 4-4-2 年的间隔运行相同的方法 3 次以获得正确的结果。
  • 假设意味着,如果我做 setAlarms:nil 或 [event setAlarms:[NSArray array]];当我检查日历中添加的事件时,我可以看到有警报...
【解决方案2】:

我发现默认闹钟是由日历设置的 Settings.app 设置的。 如果在 settings.app 中设置了默认警报,我找不到设置没有警报的事件的正确方法。

【讨论】:

  • 这就是答案。启动 Apple 的日历应用程序,然后启动 Preferences、Alerts 并将默认设置为“None”。
【解决方案3】:

我终于找到了为什么我们中的一些人在创建新的 EKEvents 事件时收到警报的原因,尽管我们已指定警报关闭。 对我来说,我猜对你们大多数人来说,选定的日历是谷歌日历。 谷歌日历有一个设置,它为每个添加的新事件创建一个警报。 要关闭它,请在网络浏览器上登录您的谷歌日历将其关闭。 我希望这会节省一些挫败感! 兄弟, 埃里克

【讨论】:

  • iOS 和 iCloud 日历也是如此。请参阅 G-Power 答案。
【解决方案4】:

似乎禁用警报的唯一方法是使用以下代码在遥远的将来创建一个

EKAlarm * alarm = [EKAlarm alarmWithAbsoluteDate:[NSDate distantFuture]];
event.alarms = @[alarm];

希望这会有所帮助。

【讨论】:

    【解决方案5】:

    对我来说唯一的方法是在创建后手动将其从事件中删除:

    private func CreateEntry(calendar : EKCalendar, date: Date, prop: String) {
    
        let event:EKEvent = EKEvent(eventStore: eventStore)
    
        event.title = prop
        event.startDate = date
        event.endDate = date
        event.isAllDay = true
        event.notes = prop
        event.calendar = calendar //eventStore.defaultCalendarForNewEvents
    
        if event.alarms != nil {
            for del in event.alarms! {
                event.removeAlarm(del)
            }
        }
    
        do {
            try eventStore.save(event, span: EKSpan.thisEvent, commit: true)
        } catch let error as NSError {
            print("failed to save event with error : \(error)")
        }
    }
    

    【讨论】:

      【解决方案6】:

      根据我的经验,问题已解决。 它取决于设备,而不是模拟器,取决于设置/邮件、联系人、日历/默认警报时间/事件设置。 如果设置为 None,您可以添加警报或将其保留为默认值,即 nil。有用。 如果设置为其他任何值,这将覆盖您对事件警报所做的任何设置,包括 nil。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        相关资源
        最近更新 更多