简体   繁体   English

如何在日历中的EKEvent中设置无警报

[英]How set no alarm in EKEvent in calendar

when i create a new EKEvent for a calendar i notice that automatically add an alarm ad 9 of the event day, how i can set no alarm ? 当我为日历创建新的EKEvent ,我注意到会自动添加事件日的警报广告9 ,如何设置无alarm i have tried in this way: 我试过这样的方式:

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

but don't works, and in the calendar i see the alarm how u can see: 但是不起作用,在日历中,我看到你可以看到的警报:

在此输入图像描述

anyone knows how i can add EKEvent without alarm? 有谁知道如何在没有警报的情况下添加EKEvent?

you should set an empty NSArray with no alarms, like this: 你应该设置一个没有警报的空NSArray ,如下所示:

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

I found that default alarm is set by Settings.app of Calendar settings. 我发现默认闹钟是由Settings.app设置的日历设置。 I don't find a right way to setup an event without alarm if default alarm is set in settings.app. 如果在settings.app中设置了默认警报,我找不到正确设置事件而没有警报的方法。

I have finally found the reason for why some of us gets an alarm when creating new EKEvents event though we have specified alarms off. 我终于找到了为什么有些人在创建新的EKEvents事件时会发出警报的原因,尽管我们已经指定了警报。 For me, and I'm guessing for most of you, the selected calendar is a google calendar. 对我而言,我猜你们大多数人都选择日历是Google日历。 Google calendar has a setting where it creates an alarm for every new event added. Google日历的设置可为每个添加的新活动创建闹钟。 To turn it off, log on to your google calendar on a web browser to turn it off. 要将其关闭,请在网络浏览器上登录您的Google日历以将其关闭。 I hope this will save some frustration! 我希望这会挽回一些挫败感! Brgds, Erik 布里兹,埃里克

It looks like only way to disable alarm is to create one in distant future using the following code 看起来禁用警报的唯一方法是使用以下代码在遥远的将来创建警报

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

Hope this helps. 希望这可以帮助。

Issue solved at my experience. 问题根据我的经验解决了。 It depends, in the device, not in the simulator, by Settings/Mail,Contacts,Calendars/Default Alert Times/Events Setup. 它取决于设备,不在模拟器中,通过设置/邮件,联系人,日历/默认警报时间/事件设置。 If set to None you can add an alert or leave it as per the default, ie nil. 如果设置为“无”,则可以添加警报或保留默认值,即nil。 It works. 有用。 If set to anything else, this overwrites any setup you make to the event alarm, nil included. 如果设置为其他任何内容,则会覆盖您对事件警报所做的任何设置,包括nil。

The only way for me is removing it manually from the event just after creation: 对我来说,唯一的方法是在创建后立即从事件中手动删除它:

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)")
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM