代码之家  ›  专栏  ›  技术社区  ›  Sjakelien

访问EKCalendar

  •  0
  • Sjakelien  · 技术社区  · 6 年前

    在我的应用程序中,我有一个开关,允许用户将某些事件放入他们的议程中。我是这样处理的:

    @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”不仅包含请求,还包含设置。

    我该怎么办?

    1 回复  |  直到 4 年前
        1
  •  0
  •   rmaddy    6 年前

    隐私请求只会被请求一次。如果检测到当前被拒绝,则可以更新UI或提示用户转到“设置”并将其打开。你可以用 UIApplication openSettingsURLString UIApplication openURL