如何从Swift应用程序打开日历(例如按下按钮时)?或者有没有办法在应用程序的视图控制器中嵌入日历? 我想避免使用其他人编写的外部日历。谢谢!
答案 0 :(得分:6)
您可以使用网址方案calshow://
打开日历应用:
UIApplication.sharedApplication().openURL(NSURL(string: "calshow://")!)
使用EventKit,您可以实现自己的日历。您应该从Apple网站上阅读Calendar and Reminders Programming Guide。
答案 1 :(得分:2)
openURL在iOS10中已弃用
从关于UIKit的部分中iOS的iOS What’s New指南:
新的UIApplication方法openURL:options:completionHandler:,其中 以异步方式执行并调用指定的完成处理程序 在主队列上(此方法替换openURL:)。
Swift 3
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
print("Open \(scheme): \(success)")
}
}
}
// Typical usage
open(scheme: "calshow://")
Objective-C
- (void)openScheme:(NSString *)scheme {
UIApplication *application = [UIApplication sharedApplication];
NSURL *URL = [NSURL URLWithString:scheme];
if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) {
[application openURL:URL options:@{}
completionHandler:^(BOOL success) {
NSLog(@"Open %@: %d",scheme,success);
}];
} else {
BOOL success = [application openURL:URL];
NSLog(@"Open %@: %d",scheme,success);
}
}
// Typical usage
[self openScheme:@"calshow://"];
注意: - 不要忘记在info.plist文件中添加隐私使用说明。如果您尝试打开任何系统应用,那么在iOS 10+中需要在info.plist文件中指定隐私使用说明,否则您的应用会崩溃。
答案 2 :(得分:1)
正如HoaParis已经提到的,您可以使用openURL
方法调用日历。
默认情况下苹果没有嵌入式日历,但您可以查看其他日历,例如github上提供的开源日历CVCalendar。因此,您可以在项目中使用它,也可以检查开发人员如何编写日历。