[swift-evolution] What's the Pages/Numbers/Keynote file's UTI in Drop&Drag

Yun Zeng zengyun.programmer at gmail.com
Mon Oct 2 02:23:32 CDT 2017

Hi everyone,
Recently I am developing Drag&Drop function on iPad and met a problem: I
can not get Pages/Numbers/Keynote files from performDrop
in UIDropInteractionDelegate. Here is my solution:

1. Create my own file item provider, follow the protocol
2. *override method readableTypeIdentifiersForItemProvider, register UTI of
iWorks files which are com.apple.iwork.pages.sffpages,
com.apple.iwork.numbers.sffnumbers and com.apple.keynote.key.* I got those
UTI from [[NSWorkspace sharedWorkspace] typeOfFile:filePath error:nil]
3. override + (instancetype)objectWithItemProviderData:(NSData *)data
typeIdentifier:(NSString *)typeIdentifier error:(NSError * _Nullable
__autoreleasing *)outError
4. implement canHandleSession of UIDropInteractionDelegate and return [session
canLoadObjectsOfClass:[DTFileItemProvider class]]

I do the same thing on office files, and it work very well, I can get
file's data in performDrop. But iWorks file are not.

So did I set the wrong UTI or something?
Zeng Yun
iOS Engineer
Email/QQ: zengyun.programmer at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171002/df1dd796/attachment.html>

More information about the swift-evolution mailing list