- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 iOS 11 拖放功能集成到来自 Xcode 9 beta 的应用程序中。我对创建标准日历应用程序可以理解的 NSItemProvider 很感兴趣。我的拖动从 UITableView 开始,因此只实现了一个 dragDelegate 方法。
到目前为止,我已经尝试了以下方法:
let text = "Rendez-vous at \(clientName)"
let data = text.data(using: .utf8)
let itemProvider = NSItemProvider()
itemProvider.registerDataRepresentation(forTypeIdentifier: kUTTypeCalendarEvent as String, visibility: .all) { completion in
completion(data, nil)
return nil
}
let dragItem = UIDragItem(itemProvider: itemProvider)
还尝试使用类型标识符 kUTTypePlainText。不走运,日历应用程序没有记录掉落。
我找不到关于此的任何官方文档。我希望日历应用程序正在寻找一些标准的日历数据,而这不仅限于相互通信的标准应用程序。例如,您可以将笔记应用中的文本拖放到日历中以创建事件。
有人知道我可以尝试什么吗?
提前致谢。
最佳答案
TL;DR:让默认 iOS 日历应用程序识别符合 NSItemProviderWriting
协议(protocol)的自定义对象的秘诀是 "com.apple .ical.ics"
类型标识符并将自定义对象导出为 iCalendar 字符串 (vEvent
)。
我已经研究了几天,终于成功了!我会尝试尽可能分解我的步骤。
"com.apple.ical.ics"
。loadData
函数将尝试找到拖动目的地(本例中的日历应用程序)支持并且您的应用程序也支持的标识符,首先尝试获得最高保真度. 例如:
public static var writableTypeIdentifiersForItemProvider: [String] {
return ["com.yourcompany.myEvent", "com.apple.ical.ics"]
}
public func loadData(withTypeIdentifier typeIdentifier: String, forItemProviderCompletionHandler completionHandler: @escaping (Data?, Error?) -> Void) -> Progress? {
switch typeIdentifier {
case "com.yourcompany.myEvent": // Your custom handling goes here
case "com.apple.ical.ics": completionHandler(createVEvent(), nil)
default: completionHandler(nil, YourAppError.someCustomError)
}
return nil
}
vEvent
字符串:
vCard
字符串。从该 session 中 check out 演示项目。 vEvent
,但是有很多有用的信息 here和 here .这里有一个建议:
private func createVEvent() -> Data? {
let today = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd'T'HHmmss'Z'"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let startDateString = dateFormatter.string(from: startDate)
let endDateString = dateFormatter.string(from: endDate)
let todayString = dateFormatter.string(from: today)
var vCalendarText = "BEGIN:VCALENDAR\n"
vCalendarText += "VERSION:2.0\n"
vCalendarText += "PRODID:-//Your Company//App Name//EN\n"
vCalendarText += "BEGIN:VEVENT\n"
vCalendarText += "UID:\(identifier.uuidString)\n"
vCalendarText += "SUMMARY:\(name)\n"
vCalendarText += "DTSTAMP:\(todayString)\n"
vCalendarText += "DTSTART:\(startDateString)\n"
vCalendarText += "DTEND:\(endDateString)\n"
vCalendarText += "END:VEVENT\n"
vCalendarText += "END:VCALENDAR"
return vCalendarText.data(using: .utf8)
}
↑ 类似于我之前提到的 session 演示中的 createVCard()
函数……
就是这样!这几乎就是您所需要的。困难的部分是了解日历应用程序支持的标识符以及如何制作 vEvent
。感谢quiker用于查找支持的标识符。
最后一个提示:您可以使用 this nifty tool here 验证您的 iCalendar 字符串.
请注意,这只允许删除您的自定义对象。 将事件从日历拖到您的应用程序是另一回事,但您可以从我这里的提示中弄清楚。 :)
编码愉快!
关于calendar - iOS 11 拖放 : dropping on standard Calendar app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45457789/
JavaScript Standard Style 翻译: Português, Spanish, 繁體中文, 简体中文 standard 规则列表,太多不必阅读。 了解 standard 的最好方式
我有一个 exec我使用 outputproperty 将其输出放入属性的任务属性。该命令可能会向 stderr 打印一些错误,我不希望将这些错误包含在输出中(因为输出被馈送到另一个命令中),而是要打
标题说明了一切 - 如何将 .NET 标准库标记为符合 CLS? 我用 C# 编写了一个简单的库,目标是 .NET Standard 1.0 框架。它包括两个枚举: public enum Align
我有一个写入错误输出的 PowerShell 脚本。该脚本可以简单如下: Write-Error 'foo' Start-Sleep -s 5 Write-Error 'bar' 我实际调用的脚本产生
对于完整的 .NET 项目,您可以在 Project Properties > Application tab > Assembly Information.. 中勾选一个框以使项目 COM 可见。
我将我的项目 ( https://github.com/MarkKhromov/The-Log) 迁移到 .NET Standard 2.0,但我的应用程序构建已损坏。我该如何解决这个问题? 我的解决
互联网上的许多文章都使用“标准输入/输出/错误流”术语好像每个术语都与使用的“标准输入/输出/错误设备”术语具有相同的含义在其他文章上。例如,很多文章说标准输出流默认是监视器,但可以重定向到文件、打印
我正在尝试从 https://github.com/go-yaml/yaml 导入 go-yaml ,并且我看到了 Google 未提供帮助的错误。 我运行了 go get gopkg.in/yaml
在列出 TimeZoneInfo.GetSystemTimeZones 返回的 TimeZoneInfo 的所有 Id 属性时,出现了两个版本的 EST:美国东部标准时间和东部标准时间。有什么区别?
问题: 如函数的 C 引用页所述,c16rtomb,来自 CPPReference ,在注释部分下: In C11 as published, unlike mbrtoc16, which conve
我想使用 go 语言从我的数据库中检索一些数据。这是我在文件 main.go 中的代码的开头 package main import ( _ "github.com/go-sql-driver
我一直在通过STM32F4发现进行音频项目,我注意到一件事,所有I2S标准仅适用于一个麦克风(取决于标准使用单独的位的哪个边缘)。例如飞利浦(Philips),MSB或LSB标准使用下降沿作为位触发,
有没有标准定义了 语法 和 语义的 汇编语言 ?与语言类似 C 有 ISO 标准和语言 C# 有 ECMA 标准?是只有一种标准,还是有更多标准? 我问是因为我noticed那个汇编语言代码看了不同
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 1年前关闭。 Improve this
我们正在内部构建API,并且经常传递带有多个值的参数。 他们使用:mysite.com?id=1&id=2&id=3 代替:mysite.com?id=1,2,3 我赞成第二种方法,但我很好奇是否真的
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
我认为有很多人不知道RFC(征求意见)。我知道它们在逻辑上是什么,但是有人能为新开发人员提供一个很好的描述吗?另外,共享一些有关如何使用和阅读它们的资源也很好。 最佳答案 这个术语来自互联网的前身AR
我找不到 Somaliland 的两个字母的国家/地区缩写,可能是因为它不是一个国家,而是正如维基百科所说:“一个未被承认的 self 宣布的事实上的主权国家,被国际承认为索马里的一个自治区”。尽管如
我正在编写一款蜜 jar 软件,该软件将对其交互进行大量记录,我计划记录纯文本 .log 文件。 我有两个问题,来自不太熟悉服务器日志方式的人。 首先,我该如何分解我的日志文件,我假设运行一个月后我不
我最近负责调试两个不同的程序,这两个程序最终至少需要共享一个 XML 解析脚本。一个是用 PureMVC 编写的,另一个是从头开始构建的。虽然最初从头开始编写是有意义的(它节省了大量内存,但内存问题已
我是一名优秀的程序员,十分优秀!