如何从iPhone/iPad应用程序添加多个事件到iPhone日历?
我想你的帮助我的朋友。我正在开发iphone/ipad通用应用程序。我想添加用户选择的多个事件(可能是1-50个事件)。这个应用程序将添加事件到iphone日历。事件和事件日期可能有所不同。如何在没有用户交互的情况下向日历添加多个事件我知道将单个事件添加到iPhone/iPad日历,但是,我不知道要添加多个事件?请帮助我的朋友..我在谷歌搜索,但没有得到答案?请..提前致谢。如何从iPhone/iPad应用程序添加多个事件到iPhone日历?
感谢阅读我可怜的英语。
Yuva.M
也许你有你的所有事件对象存储在数组中,然后依次通过它,并添加一个接一个到iPhone的日历。
谢谢Mr.KingofBliss。但是,可以添加具有不同日期的事件,而无需用户交互?你能回答我吗?谢谢。有没有示例代码? –
@Yuvaraj使用不同日期时遇到什么问题? – KingofBliss
@KingofBilss谢谢你,我的朋友。我已经找到了从iphone应用程序向iCal添加多个事件的方式。你的回答帮助我解决了我的问题。谢谢。 –
.h file
#import <EventKit/EventKit.h>
#import <EventKitUI/EventKitUI.h>
// EKEventStore instance associated with the current Calendar application
@property (nonatomic, strong) EKEventStore *eventStore;
// Default calendar associated with the above event store
@property (nonatomic, strong) EKCalendar *defaultCalendar;
.m file
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// Calendar event has called
self.eventStore = [[EKEventStore alloc] init];
// Check access right for user's calendar
[self checkEventStoreAccessForCalendar];
}// end viewDidLoad
- (BOOL) addAppointmentDateToCalender:(NSDate *) appointment_date {
self.defaultCalendar = self.eventStore.defaultCalendarForNewEvents;
EKEvent *event = [EKEvent eventWithEventStore:eventStore];
// Doctor Name
NSString *doctorName = [objSpineCustomProtocol getUserDefaults:@"doctorName"];
// Title for the appointment on calender
NSString *appointment_title = [NSString stringWithFormat:@"Appointment with Dr.%@", doctorName];
event.title = appointment_title;
//[NSDate dateWithString:@"YYYY-MM-DD HH:MM:SS ±HHMM"], where -/+HHMM is the timezone offset.
event.startDate = appointment_date;
NSLog(@"Start date of appointment %@",event.startDate);
NSDate *end_date_appointment = [[NSDate alloc] initWithTimeInterval:1800 sinceDate:appointment_date];
event.endDate = end_date_appointment;
NSLog(@"End date of appointment %@",event.endDate);
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
NSError *err;
[eventStore saveEvent:event span:EKSpanThisEvent error:&err];
return true;
}// end method add_appointment_date_to_calender
-(void)checkEventStoreAccessForCalendar {
NSLog(@"Method: checkEventStoreAccessForCalendar");
EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
switch (status) {
// Update our UI if the user has granted access to their Calendar
case EKAuthorizationStatusAuthorized: [self accessGrantedForCalendar];
break;
// Prompt the user for access to Calendar if there is no definitive answer
case EKAuthorizationStatusNotDetermined: [self requestCalendarAccess];
break;
// Display a message if the user has denied or restricted access to Calendar
case EKAuthorizationStatusDenied:
case EKAuthorizationStatusRestricted:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Privacy Warning" message:@"Permission was not granted for Calendar"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
break;
default:
break;
}
}// end of emethod checkEventStoreAccessForCalendar
// Prompt the user for access to their Calendar
-(void)requestCalendarAccess
{
[self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
if (granted) {
AppointmentViewController* __weak weakSelf = self;
// Let's ensure that our code will be executed from the main queue
dispatch_async(dispatch_get_main_queue(), ^{
// The user has granted access to their Calendar; let's populate our UI with all events occuring in the next 24 hours.
[weakSelf accessGrantedForCalendar];
});
}
}];
}
// This method is called when the user has granted permission to Calendar
-(void)accessGrantedForCalendar
{
NSLog(@"Method: accessGrantedForCalendar");
// Let's get the default calendar associated with our event store
self.defaultCalendar = self.eventStore.defaultCalendarForNewEvents;
}// end of method accessGrantedForCalendar
@ Yuvaraj,你是怎么做到的呢?我有兴趣在一周的不同日子里在三个月的过程中多次发生一次事件。我真的不想单独添加它们。请分享:) – 2012-02-07 04:29:51