EKEvent для iOS 6 не работает никоим образом

Я пытался запросить разрешение с помощью

if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
// iOS 6 and later
   eventStorerequestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {

}];}

Но всплывающее окно просто не появляется. Я пробовал множество примеров, пробовал множество проектов, но ни один из них не работает на iOS 6. Приложения не отображаются в разделе «Конфиденциальность»> «Календари»>. Я думаю, что схожу с ума из-за этого. Может кто-нибудь показать мне фрагмент кода, который работает на iOS 6, где появляется всплывающее окно с запросом разрешения, а после его предоставления экспортирует событие в приложение календаря. Спасибо!


person PonyLand    schedule 12.12.2012    source источник
comment
Вы строите как для iOS5, так и для iOS6?   -  person Peter Warbo    schedule 12.12.2012
comment
Просто iOS 6, я думаю. Это действительно имеет значение? Я думаю, что если бы я тестировал его на iOS 5, он бы работал, но в данный момент я тестирую его только на iOS 6.   -  person PonyLand    schedule 12.12.2012
comment
Что ж, если вы собираетесь создавать только для iOS6, вам не нужно проверять, реагирует ли он на селектор, поэтому вы можете исключить это из уравнения.   -  person Peter Warbo    schedule 12.12.2012


Ответы (2)


Просто позвоните в EKEventStore. Он автоматически запросит разрешение, если вы это сделаете.

Если он не пытается перейти к настройкам вашего iPhone: «Основные»> «Сброс»> «Сбросить местоположение и конфиденциальность». После этого попробуйте еще раз!

person Tom van Zummeren    schedule 12.12.2012

Во-первых: я думаю, что у вас опечатка (может быть, только здесь, в stackoverflow). Правильный код:

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error){ }];

Второй: вы примеряете устройство? 6.0 Simulator не имеет приложения календаря (но имеет поддержку календаря) и по какой-то причине не запрашивает разрешения (всегда возвращает предоставленный доступ)

person LombaX    schedule 12.12.2012
comment
В симуляторе есть календарь! Единственное, чего в нем нет, — это приложения-календаря. Но вы, безусловно, можете создавать и читать календари и события с помощью EventKit. - person Tom van Zummeren; 12.12.2012
comment
да. У него нет приложения календаря, я исправляю свой ответ. Этот код работает на симуляторе в том смысле, что он всегда предоставляется, он не запрашивает разрешения. Я не могу найти никакой официальной ссылки, возможно, это ошибка? - person LombaX; 12.12.2012
comment
Действительно, я тестирую на Симуляторе. Но разве я не должен найти свое приложение в настройках › конфиденциальности › календарей? - person PonyLand; 12.12.2012
comment
Не уверен... попробуйте вместо этого на реальном устройстве. - person Tom van Zummeren; 13.12.2012
comment
Я не могу найти документацию об этом. Могу ответить только исходя из своего опыта: НЕТ. В симуляторе доступ всегда предоставляется, и вы не видите настройки внутри календарей конфиденциальности. - person LombaX; 13.12.2012