在 iPhone 上使用 EventKit 时,我注意到可能存在一些无法修改的事件。到目前为止,我遇到的例子是生日和与 CalDAV 同步的事件。当您在 iPhone 上的标准内置日历应用程序中查看事件的详细信息时,右上角的“编辑”按钮在这些情况下不可见,而在查看“正常”事件时则可见。
我到处搜索,阅读所有文档,但我根本找不到任何告诉我如何检测这种行为的信息!我只能在事后检测到它:
我正在寻找一种可以预先检测事件的不可编辑行为的方法。我知道这是可能的,因为我已经看到其他日历应用程序正确地实现了这一点。
最佳答案
好吧,似乎 SDK 没有为我提供任何我可以用来检查 EKEvent 是否为只读的东西。我通过创建一个类别来创建一个解决方法,该类别将“isReadOnly”方法添加到所有 EKEvent 实例。
EKEvent+ReadOnlyCheck.h
@interface EKEvent(ReadOnlyCheck)
- (BOOL) isReadOnly;
@end`
EKEvent+ReadOnlyCheck.m
#import "EKEvent+ReadOnlyCheck.h"
@implementation EKEvent(ReadOnlyCheck)
- (BOOL) isReadOnly {
BOOL readOnly;
NSString *originalTitle = [self.title retain];
NSString *someRandomTitle = [NSString stringWithFormat:@"%i", arc4random()];
self.title = someRandomTitle;
readOnly = [originalTitle isEqualToString:self.title];
self.title = originalTitle;
[originalTitle release];
return readOnly;
}
@end
当上述文件到位后,我可以简单地在我选择的 EKEvent 上调用
isReadOnly
。#import "EKEvent+ReadOnlyCheck.h"
...
if ([event isReadOnly]) {
// Do your thing
}
...
关于iPhone:如何检测是否可以修改 EKEvent 实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4475120/