2013-01-25 2 views
2

Я пытаюсь вызвать родной IOS календарь событий окно редактирования модально из моего iPhone приложения, используя следующий код набора для ответа из UIButton:EKEventEditor аварии на iPhone, но не на IPad

- (void) initCalendar:(id) sender { 

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

if([eventStore respondsToSelector: 
    @selector(requestAccessToEntityType:completion:)]) { 

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

     [self performSelectorOnMainThread: @selector(presentEventEditViewControllerWithEventStore:) withObject:eventStore waitUntilDone:NO]; 
    }]; 

} else { 

    [self presentEventEditViewControllerWithEventStore:eventStore]; 

} 

} 

- (void) presentEventEditViewControllerWithEventStore:(EKEventStore*)eventStore { 

EKEvent *event = [EKEvent eventWithEventStore:eventStore]; 

event.title = _meeting.meeting_title; 

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; 
NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: _meeting.date]; 

NSString *meetingTimeString = _meeting.time; 

NSRange lastColonInTimeString = [meetingTimeString rangeOfString:@":" options:NSBackwardsSearch]; 
NSString *timeHour = [meetingTimeString substringToIndex:lastColonInTimeString.location]; 
NSString *timeMinute = [meetingTimeString substringFromIndex:lastColonInTimeString.location]; 

[components setHour:[timeHour integerValue]]; 
[components setMinute: [timeMinute integerValue]]; 
[components setSecond: 00]; 

NSDate *fullDateAndTime = [gregorian dateFromComponents: components]; 

event.startDate = fullDateAndTime; 
event.allDay = NO; 
event.endDate = [[NSDate alloc] initWithTimeInterval:7200 sinceDate:fullDateAndTime]; 
event.notes = [NSString stringWithFormat:@"%@ %@", _meeting.user_notes, _meeting.organizer_notes]; 
event.location = [NSString stringWithFormat:@"%@, %@",_meeting.location_long, _meeting.location_lat]; 

[event setCalendar:[eventStore defaultCalendarForNewEvents]]; 

EKEventEditViewController* controller = [[EKEventEditViewController alloc] init]; 
controller.eventStore = eventStore; 
controller.event = event; 
controller.editViewDelegate = self; 

[self presentViewController:controller animated:YES completion:nil]; 

} 

Этот код является отлично работает в версии iPad того же приложения, но вызывает сбой на iPhone с сообщением "[EKEventEditor actionSheetShowing]: unrecognized selector sent to instance <0xXXXXXXX>"

У кого-нибудь есть идеи, почему этот код должен хорошо работать на iPad, но не на iPhone?

Thanks

ответ

0

Я использую iOS 6.x. Мой тестовый код в порядке на iPhone.

EKEventEditViewController* controller = [[EKEventEditViewController alloc] init]; 
controller.allowsEditing = YES; 
controller.event = event; 
[self presentViewController:controller animated:YES completion:nil]; 
Смежные вопросы