2013-10-24 5 views
1

Я использую EKEventEditViewController, чтобы добавить события из моего приложения в календарь iPhone. Это в настоящее время код, который я использую:EKEventEditViewController открывается невероятно медленно

[self.store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 
     if (!granted) { return; } 
     EKEvent *storedEvent = [EKEvent eventWithEventStore:self.store]; 
     storedEvent.title = self.selectedEvent.title; 
     storedEvent.startDate = self.selectedEvent.date; 
     storedEvent.endDate = [NSDate dateWithTimeInterval:60*60 sinceDate:self.selectedEvent.date]; 
     storedEvent.notes = self.selectedEvent.comments; 
     [storedEvent setCalendar:[self.store defaultCalendarForNewEvents]]; 
     self.eventController.event = storedEvent; 
     self.eventController.eventStore = self.store; 
     self.eventController.editViewDelegate = self; 
     [self presentViewController:self.eventController animated:YES completion:nil]; 
    }]; 

Этот код занимает свыше 10 секунд, чтобы произвести необходимый вид события, хотя я предварительно inited как контроллер представления и EventStore. Есть ли способ сделать это быстрее, или мне просто нужно поставить счетчик и сказать пользователям подождать?

ответ

6

Обработчик завершения будет вызываться в произвольной очереди. Внутри блока по отгрузке отправки материалов, связанных с UIKit, по основной резьбе:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
    self.eventController.event = storedEvent; 
    self.eventController.eventStore = self.store; 
    self.eventController.editViewDelegate = self; 
    [self presentViewController:self.eventController animated:YES completion:nil]; 
}]; 
Смежные вопросы