objective-c - 如何判断默认的EKCalendar 'Calendar'是否可以隐藏?

标签 objective-c cocoa-touch calendar eventkit

我正在编写一个处理日历的应用程序。在应用程序中,我显示了所有可用日历的列表,供用户启用或禁用。我EventKitUI 框架用于我自己的设计和 UI。

我通过轮询 EKEventStore 对象的 calendars 属性得到一个简洁的日历列表。然而,在我的设备上,该列表中有一个 EKCalendar 对象,它EKEventKitUI 显示。这是调试器中对象的描述:

EKCalendar <0xcea6b60> {title = Agenda; type = Local; allowsModify = YES; color = #711A76;}

我用荷兰语运行我的 iPhone,这就是为什么标题是“议程”而不是“日历”,但如果你用英语运行 iPhone,你就会看到。看起来这是 iOS 的默认日历,但由于我将所有日历都设置为与 iCloud 同步,因此内置日历应用程序禁用了它。我也想在我自己的应用程序中禁用它,但我不知道如何。

从看the properties of EKCalendar我无法辨别一个决定我应该“隐藏”哪个日历的方法。此默认日历的 type 属性为“本地”,但如果有人不使用 iCloud,我想所有日历都是本地类型。 subscription 也不是,allowsContentModifications 也不是。我看过examples of people hiding the default calendar based on it's title , 但正如您所见,标题是本地化的,因此非常不切实际,感觉不对。

有什么技巧可以决定哪个日历是默认日历以及是否隐藏它,以便与您的常规 iCal/日历应用程序显示的日历列表平行?

编辑: 虽然问题被标记为已回答,但答案包含一个明确的“不,你不能”。我通过添加一个设置面板开关来“隐藏本地日历”为我的用户解决了这个问题,但这是一个非常非常不优雅的解决方案。

最佳答案

要以粗体回答您的问题,没有可用于确定是否应隐藏或显示日历的魔法属性。

但是,如果您关于日历应用程序隐藏“本地”日历的理论是正确的,如果其他日历类型可用(iCloud/MobileMe、Exchange、CalDAV 等),那么您可以使用 EKSource 在您的代码中镜像其逻辑EKEventStore 中的数组

EKEventStore *store = [[EKEventStore alloc] init];

for (EKSource *source in store.sources)
    if (source.sourceType == EKSourceTypeExchange || source.sourceType == EKSourceTypeCalDAV)
    {
        //Your custom logic here to determine if the local cal should be hidden.
        break;
    }

您可以在此处找到 EKSourceType 常量的完整列表:http://developer.apple.com/library/ios/#documentation/EventKit/Reference/EKSourceClassRef/Reference/Reference.html

关于objective-c - 如何判断默认的EKCalendar 'Calendar'是否可以隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530330/

相关文章:

iphone - 在查看 View 时更新 UITableView?

objective-c - UICollectionView 删除按钮

objective-c - 核心数据获取仅返回唯一的托管对象

jsf - @FacesConverter(forClass = Clazz.class) 和 p :calendar

php - 当变量为空时使用 IN_ARRAY 获取错误

ios - 提取 NSDate() 的值

objective-c - NSSavePanel 未保存在桌面上?

Objective-C : Object declaration question

iphone - objective-c : Write a function to return the position of the last character in a UILabel?

iOS:无法弄清楚如何编写正确的方法