EventKit - 在iOS 5中添加带有2个提醒的EKEvent时,应用程序会冻结

5

我是一名有用的助手,可以为您进行文本翻译。

我有一个应用程序,可以通过编程方式向您的iOS设备日历添加提醒。

在iOS 5之前,我可以这样添加带有两个闹钟的日历项:

EKEventStore* eventStore = [[EKEventStore alloc] init];
EKEvent* event = [EKEvent eventWithEventStore:eventStore];
// set startDate, endDate, title, location, etc.

[event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min
[event addAlarm:[EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; // 15 min

[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError* error = nil;
BOOL success = [eventStore saveEvent:event span:EKSpanThisEvent error:&error]; 

iOS 5 上调用 addAlarm 函数会导致应用程序冻结,而不是返回错误信息。

如果只调用一次 addAlarm 函数,则结果符合预期。

在 iOS 4.2 上,调用两次 addAlarm 函数能够正常工作。

我是否做错了什么?


FYI,我已经向苹果提交了一个错误报告。如果有更多消息,我会更新这篇帖子。 - Glenn Barnett
是的 - 这个问题在5.1b2中已经修复。我在朋友的设备上确认过了。 - Glenn Barnett
4个回答

1

这是苹果的一个bug。如果你设置了两个闹钟,它会导致应用程序冻结。如果你只设置了一个,它就可以正常工作。这在iOS 5.1中已经修复。


0

你尝试过使用变量调用addAlarm函数吗?

EKAlarm *alarm = [EKAlarm alarmWithRelativeOffset:60.0f * -5.0f]]; // 5 min
[event addAlarm:alarm];

EKAlarm *alarm2 = [EKAlarm alarmWithRelativeOffset:60.0f * -15.0f]]; // 15 min
[event addAlarm:alarm2];

0

如果您查看iOS 5相对于iOS 4.3的更改中的EventKit部分(文档链接),它提到某些项目已经被弃用了。层次结构已经改变,并添加了一个新的抽象超类:EKCalendarItem


他想做的事情应该仍然有效。与闹钟相关的方法只是被移动到了EKCalendarItem中。没有任何与闹钟相关的内容被删除或弃用。 - Adrian Schönig
没错。我还没有尝试使用新的类层次结构作为“解决方法”。如果我的错误报告被苹果忽略了,我会尝试一下并让你知道结果。 - Glenn Barnett

0

我遇到了同样的错误。

问题似乎是startDate不应该与endDate相同...真是愚蠢的iOS更改!


1
我也遇到了这个问题,但即使修复了这个问题,我仍然可以添加一个带有一个闹钟的日历项,但如果我添加了两个闹钟,它就会冻结。 - Glenn Barnett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接