iOS 11 dropInteraction performDrop für Dateien

9

Wie kann ich mit dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) andere Dateitypen als Bilder akzeptieren? Sagen Sie mir zum Beispiel, dass ich eine PDF oder MP3 aus der Files App ziehe. Wie kann ich diese Datei akzeptieren und die Daten erhalten?

Ich dachte, ich könnte NSURL.self verwenden, aber das scheint nur für URLs zu funktionieren, die von Safari und einer Textansicht gezogen wurden.

    
Johan Nordberg 12.06.2017, 08:36
quelle

2 Antworten

8

Ein Beispiel für PDF ( com.adobe.pdf UTI), das NSItemProviderReading implementiert, könnte etwa so aussehen:

%Vor%

Dann müssen Sie in Ihrem Delegaten mit diesem PDFDocument umgehen:

%Vor%     
kikettas 31.08.2017 13:02
quelle
0

Innerhalb von dropInteraction rufen Sie session.loadObjects(ofClass:) auf, das Sie wahrscheinlich bereits haben, und haben UIImage und NSURL ausprobiert.

ofClass muss mit NSItemProviderReading ( Dokumentation ) übereinstimmen. Die entsprechenden Standardklassen lauten NSString , NSAttributedString , NSURL , UIColor und UIImage . Für alles andere denke ich, dass Sie eine benutzerdefinierte Klasse erstellen müssen, die dem Protokoll entspricht, indem Sie public.mp3 als UTI . Ihre benutzerdefinierte Klasse wird einen init(itemProviderData: Data, typeIdentifier: String) Initialisierer haben, der Ihnen eine Tasche mit Bytes ( itemProviderData ) geben soll, das sind die MP3-Daten. Von dort sollten Sie Ihre Datei nach Bedarf schreiben können.

    
Joe Wilcoxson 16.06.2017 20:27
quelle

Tags und Links