ios - 试图获得一个按钮来打开 ios 上的日历。单击按钮时没有任何反应

标签 ios swift xcode calendar

在尝试学习编程时,我无法通过在我的应用程序中按下按钮来创建日历事件。

我已将隐私设置放入 info.plist 中,观看了多个视频并复制粘贴了不同的选项。 没有错误出现,按钮只是闪烁,没有任何反应。 甚至可以是模拟..?

import UIKit
import EventKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func btnAddEventPressed(_ sender: UIButton) {
        let eventStore:EKEventStore = EKEventStore()

        eventStore.requestAccess(to: .event) { (granted, error) in

            if (granted) && (error == nil) {
                print ("granted\(granted)")
                print ("error\(error)")

                let event:EKEvent = EKEvent(eventStore: eventStore)
                event.title = "Investor research"
                event.startDate = Date()
                event.endDate = Date()
                event.notes = "This is note"
                event.calendar = eventStore.defaultCalendarForNewEvents

                do {
                    try eventStore.save(event, span: .thisEvent)
                } catch let error as NSError {
                    print("error : \(error)")
                }

                print("Save Event")

            } else {
                print("error : \(error)")
            }
        }
    }
}

我使用了这个视频 https://www.youtube.com/watch?v=sSFzcvvs4Oc&t=603s ,并期望能够通过按下按钮来安排事件,但什么也没有发生。我可能错过了一些明显的东西,但我做了视频中的所有内容。

最佳答案

我已经运行了这段代码,它工作正常。您是否从 Storyboard 中添加了对 IBAction 的引用?如果您正确添加引用,当您右键单击您的按钮时,它会显示“内部修饰”,如下图所示:Button Reference 您是否在 Info.plist 中正确添加了“隐私 - 日历使用说明”?如果此添加正确,那么您将获得日历使用权限的权限弹出窗口(按确定进入该弹出窗口)。 如果所有这些都没有问题,那么检查日志它应该在每次单击按钮时打印这 3 行:

grantedtrue
errornil
Save Event

如果日志打印出这些行,请检查运行应用程序的模拟器或手机的默认日历应用程序。当您运行应用程序时,它将显示当天添加的事件,在本例中为 6 月 26 日。

根据您当前的代码,单击按钮不会打开日历,它会将事件添加到日历

如果您想在保存后立即打开日历应用程序来显示添加的事件,请在 print("Save Event") 之后添加这些行:

 let interval = event.startDate.timeIntervalSinceReferenceDate
 let url = URL(string: "calshow:\(interval)")
 if let calendarUrl = url {
                if #available(iOS 10.0, *) {
                    UIApplication.shared.open(calendarUrl, options: [:],
                                              completionHandler: {
                                                (success) in

                    })
                } else {
                    UIApplication.shared.openURL(calendarUrl)

                }
            }

关于ios - 试图获得一个按钮来打开 ios 上的日历。单击按钮时没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56763322/

相关文章:

ios - CollectionView 默认项目选择

ios - didSelectRowAt 不影响 cellForRowAt

ios - UILabel动态获取字体大小 - swift 3

json - 如何根据之前的选择器 View 选择更新PickerView数据

iphone - 如何使用不同高度的 UISCrollView 分页?

c++ - Xcode SDL 资源文件夹

swift - 准备使用数组进行 Segue - Xcode 8.0 Swift 3.0

ios - 安装 Xcode 8.0 的最低硬件和软件要求

ios - AVURLAsset 未加载(.mov 文件)

ios - 当 VC 链接到 TabBarController 时,IBOutlet 和 IBAction 被禁用