EKEventEditor在iPhone上崩溃但在iPad上没有崩溃

时间:2013-01-25 17:20:28

标签: iphone ios objective-c ipad eventkit

我正在尝试使用以下代码集从我的iPhone应用程序以模态方式调用本机iOS日历事件编辑窗口来响应UIButton:

- (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上工作?

由于

1 个答案:

答案 0 :(得分:0)

我正在使用iOS 6.x. 我的测试代码在iPhone上没问题。

EKEventEditViewController* controller = [[EKEventEditViewController alloc] init];
controller.allowsEditing = YES;
controller.event = event;
[self presentViewController:controller animated:YES completion:nil];