EKEventEditViewController замораживает приложение и загружается через долгое время
У меня есть следующий код в Swift:
var eventController = EKEventEditViewController()
eventController.editViewDelegate = self
var store = EKEventStore()
eventController.eventStore = store
var event = EKEvent(eventStore: store)
event.title = viewModel.roleName
event.location = viewModel.location
event.startDate = viewModel.startDate
event.endDate = viewModel.endDate
eventController.event = event
var status = EKEventStore.authorizationStatusForEntityType(EKEntityTypeEvent)
switch status {
case .Authorized:
self.setNavBarAppearanceStandard()
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.presentViewController(eventController, animated: true, completion: nil)
})
case .NotDetermined:
store.requestAccessToEntityType(EKEntityTypeEvent, completion: { (granted, error) -> Void in
if granted == true {
self.setNavBarAppearanceStandard()
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.presentViewController(eventController, animated: true, completion: nil)
})
}
})
case .Denied, .Restricted:
UIAlertView(title: "Access Denied", message: "Permission is needed to access the calendar. Go to Settings > Privacy > Calendars to allow access for the Be Collective app.", delegate: nil, cancelButtonTitle: "OK").show()
return
}
Это довольно просто. Отлично работает на симуляторе. Но когда вы пытаетесь запустить код на устройстве, весь пользовательский интерфейс зависает, и иногда, примерно через 1 минуту, появляется контроллер редактирования события просмотра, а иногда и вовсе.
Пожалуйста помоги.
1 ответ
Немного покопавшись, я выяснил, что переменная eventStore (EKEventStore) должна быть переменной экземпляра или глобальной переменной в одноэлементном классе. Если это локальная переменная, то представление контроллера будет длиться вечно. Это, вероятно, некоторые проблемы с оптимизацией в SDK.