Ich versuche, die iOS 11 Drag & Drop-Funktion in einer App von Xcode 9 Beta zu integrieren. Ich bin interessant beim Erstellen eines NSItemProvider, der von der Standard-Kalender-App verstanden werden kann. Mein Drag startet von einem UITableView, also nur eine DragDelegate-Methode implementiert.iOS 11 Drag & Drop: Drop auf Standard-Kalender App
Bisher habe ich versucht, die folgenden:
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)
Und auch versucht, durch die Typkennung kUTTypePlainText verwenden. Kein Glück, Kalender-App registriert den Tropfen nicht.
Ich kann keine offizielle Dokumentation darüber finden. Ich hoffe, dass die Kalender-App nach einigen Standard-Kalenderdaten sucht, und dies ist nicht auf Standard-Apps beschränkt, die miteinander kommunizieren. Sie können z. B. Text aus der Notizen-App ziehen und im Kalender ablegen, um ein Ereignis zu erstellen.
Wer weiß, was ich versuchen könnte?
Vielen Dank im Voraus.
Wow, was für eine tolle Antwort. Ich werde das heute testen und validieren. Vielen Dank für die Zeit, die Sie mit all diesen Details verbracht haben. –
Hey Lucas, ich habe dein Beispiel getestet, und es funktioniert super. Aber es gibt eine Sache, die mich stört. Wenn ich keinen DTSTART-Wert einstelle, schlägt der Drop fehl. Wenn ich jedoch einen DTSTART-Wert einstelle, ist der Drop erfolgreich, ignoriert jedoch den Platz im Kalender, wenn das Element gelöscht wird. Dies verhindert den Zweck des visuellen Löschens des Elements zu dem Zeitpunkt, zu dem ich das Ereignis erstellen möchte. Irgendeine Idee ? –