在尝试学习编程时,我无法通过在我的应用程序中按下按钮来创建日历事件。
我已将隐私设置放入 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 的引用?如果您正确添加引用,当您右键单击您的按钮时,它会显示“内部修饰”,如下图所示: 您是否在 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/