Я пишу приложение, работающее с календарями. В приложении я показываю список всех доступных календарей, которые пользователь может включить или отключить. Я неиспользую фреймворк EventKitUI
для собственного дизайна и пользовательского интерфейса.
Я получаю аккуратный список календарей, опрашивая свойство calendars
объекта EKEventStore
. Однако на моем устройстве в этом списке есть объект EKCalendar
, который непоказан EKEventKitUI
. Это описание объекта в отладчике:
EKCalendar <0xcea6b60> {title = Agenda; type = Local; allowsModify = YES; color = #711A76;}
Я запускаю свой iPhone на голландском языке, поэтому заголовок «Повестка дня», а не «Календарь», но если вы запускаете iPhone на английском языке, это то, что вам нужно». я увижу. Похоже, это календарь iOS по умолчанию, но, поскольку все мои календари настроены на синхронизацию с iCloud, он отключен для встроенных приложений календаря. Я тоже хочу отключить его в своем приложении, но не знаю как.
Глядя на свойства EKCalendar
, я не могу выделить ни одного для решения, какой календарь я должен "скрыть". Существует свойство type
, которое является «Локальным» для этого календаря по умолчанию, но если кто-то не использует iCloud, я полагаю, что все календари имеют локальный тип.подписка
тоже не так, как и allowContentModifications
. Я видел примеры того, как люди скрывали календарь по умолчанию из-за его названия, но, как вы можете видеть, название локализовано и поэтому очень непрактично, что просто кажется неправильным.
Как решить, какой календарь является календарем по умолчанию и следует ли скрывать его или нет, чтобы параллельно отображать список календарей, который отображается в вашем обычном приложении iCal/Calendar?
РЕДАКТИРОВАТЬ:Хотя вопрос был помечен как отвеченный, ответ содержит большое «нет, вы не можете». Я решил эту проблему для своих пользователей, добавив переключатель панели настроек, чтобы «скрыть локальные календари», но это очень, очень неэлегантное решение.