[英]EKEventEditor crash on iPhone but not on iPad
我正在尝试使用以下代码集从我的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上不能正常运行?
谢谢
我正在使用iOS6.x。 我的测试代码在iPhone上还可以。
EKEventEditViewController* controller = [[EKEventEditViewController alloc] init];
controller.allowsEditing = YES;
controller.event = event;
[self presentViewController:controller animated:YES completion:nil];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.