Il codice seguente aiuta ad aggiungere eventi al calendario nativo.
- (NSString*)addEventToCalendarWithTitle:(NSString *)eventTitlestr Description:(NSString *)eventDescriptionstr startDate:(NSString *)startDatestr startTime:(NSString *)startTimestr {
NSString *returneventidentifier=nil;
if (__IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED) {
NSDateFormatter *formatter_=[[NSDateFormatter alloc]init];
NSTimeZone *gmtZone = [NSTimeZone systemTimeZone];
NSDate *startedDate=nil;
NSDate *endedDate=nil;
[formatter_ setTimeZone:gmtZone];
NSLocale *enLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"];
formatter_.locale = enLocale;
[enLocale release];
if (startDatestr!=nil&&startTimestr!=nil) {
startDatestr = [startDatestr stringByAppendingString:startTimestr];
}
[formatter_ setDateFormat:[DATE_FORMAT_FROM_RESPONSE stringByAppendingString:TIME_FORMAT_FROM_RESPONSE]]; // here date and time formats are appended as datestring and time string are appended
if(startDatestr!=nil){
startedDate = [formatter_ dateFromString:startDatestr];
EKEventStore *eventStore = [[EKEventStore alloc] init];
// __block BOOL accessGranted = NO;
// if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
// dispatch_semaphore_t sema = dispatch_semaphore_create(0);
// [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
// accessGranted = granted;
// dispatch_semaphore_signal(sema);
// }];
// dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
// } else { // we're on iOS 5 or older
// accessGranted = YES;
// }
//
// if (accessGranted) {
// }
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
event.title = eventTitlestr;
event.notes = eventDescriptionstr;
event.startDate = startedDate;
endedDate = [[NSDate alloc] initWithTimeInterval:600 sinceDate:event.startDate];
event.endDate =endedDate ;
event.alarms=[NSArray arrayWithObject:[EKAlarm alarmWithRelativeOffset:DEFAULTALERTTIME]];
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
[eventStore release];
eventStore=nil;
[endedDate release];
endedDate=nil;
returneventidentifier=event.eventIdentifier;
}
[formatter_ release];
formatter_=nil;
}
else {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Alert !" message:@"Lower IOS versions event adding functionality is not possible." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
return returneventidentifier;
}
fonte
2013-05-15 07:33:30
'SBSLaunchApplicationWithIdentifier (CFSTR ("com.apple.mobilecal"), false);', ma è privato. –
@AkshayPuoi dirmi quale libreria o applicazione di esempio hai indicato per visualizzare il calendario IOS nativo? –