2012-05-10 5 views
7

私はカレンダーを扱うアプリを書いています。このアプリでは、ユーザーが有効または無効にできるすべてのカレンダーのリストを表示しています。私はではなく、EventKitUIフレームワークを自分のデザインとUIの目的で使用しています。です。デフォルトのEKカレンダー「カレンダー」を隠すことができるかどうかを決定する方法は?

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 /カレンダーアプリで表示されるカレンダーのリストを並行させるために、どのカレンダーをデフォルトカレンダーとして使用するかを非表示にするかどうかを決める秘訣はありますか?

EDIT:答えとして質問がマークされていたが、答えは「いいえ、することはできません」ビッグが含まれています。私は設定パネルを 'ローカルカレンダーを隠す'ス​​イッチを追加することでユーザーのためにこの問題を解決しましたが、これは非常に不愉快な解決策です。

答えて

5

太字で質問に答えるには、カレンダーを表示または非表示にするかどうかを判断するための魔法のプロパティはありません。

しかし、他のカレンダータイプ(iCloud/MobileMe、Exchange、CalDAVなど)が使用できる場合、カレンダーアプリケーションが「ローカル」カレンダーを隠しているというあなたの理論が正しい場合は、あなたがここにEKSourceType定数の完全なリストを見つけることができます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; 
    } 

EKSource配列:http://developer.apple.com/library/ios/#documentation/EventKit/Reference/EKSourceClassRef/Reference/Reference.html

+0

は、はい、それは私が今やっているのですが、これはあまりにもそう間違って感じています! – epologee

関連する問題