少なくともタイプ EKCalendarTypeLocal のローカル カレンダーが EKEventStore によってリストされているが、表示されず、iOS のカレンダー アプリで選択できない状況で実行します。
if ([eventStore respondsToSelector:@selector(calendarsForEntityType:)]) cals = [eventStore calendarsForEntityType:EKEntityTypeEvent];
else cals = eventStore.calendars;
おそらく、iCloud Accessing programmatically created calendar on iOS deviceと関係があることがわかりました。また、ローカル カレンダーも正常に作成され、イベントを追加できました。この作成されたカレンダーは EKEventStore によってリストされていませんでしたが、その識別子で取得しました:
aCal = [eventStore calendarWithIdentifier:calId];
テスト デバイスで iCloud アカウントを削除した後、すべてのローカル カレンダーも自分で作成したものとして表示されます。ローカル カレンダーが非表示になっているかどうかを確認する方法はありますか? そのため、情報テキストを書いたり、非表示にしたりすることもできます。