在我的应用中,我有一个开关,允许用户将某些事件添加到他们的议程中。我这样处理:
@IBAction func putInAgenda(_ sender: UISwitch) {
let store = manager.store
if (sender.isOn){
store.requestAccess(to: EKEntityType.event, completion: {
(accessGranted: Bool, error: Error?) in
if accessGranted == true {
self.eventsHandler.importEventsInAgenda(id)
} else {
DispatchQueue.main.async {
sender.isOn = false
}
}
})
} else {
//
}
shared?.set(sender.isOn, forKey: "putInAgenda")
shared?.synchronize()
}
但是,出乎我的意料,“ store.requestAccess”不仅请求,而且设置。
结果,当用户取消该对话框时,开关将切换回(预期),但是任何连续尝试将开关切换到ON位置的操作都将被视为OFF位置,而不会出现新对话框。
我该怎么办?
答案 0 :(得分:0)
只要求一次隐私请求。如果检测到当前拒绝它,则可以更新UI或提示用户转到“设置”并将其打开。您可以使用UIApplication openSettingsURLString
和UIApplication openURL
将用户带到“设置”应用中应用的设置页面。