我试图在iPad的Objective项目中实现拖放功能。这些原则似乎是直截了当的,但示例都在Swift中,我只是无法正确注册NSItemProvider,因为我遇到了loadHandler完成处理程序上的一个路障。
在Swift中,它应该是这样的:
let itemProvider = NSItemProvider()
itemProvider.registerDataRepresentation(forTypeIdentifier: kUTTypePlainText as String, visibility: .all) { completion in
completion(data, nil)
return nil
}在Objective中,语法应该如下所示:
NSItemProvider *itemProvider = [[NSItemProvider alloc] initWithItem:data typeIdentifier:kUTTypePlainText];
[itemProvider registerDataRepresentationForTypeIdentifier:kUTTypePlainText
visibility:NSItemProviderRepresentationVisibilityAll
loadHandler:?什么?
我不知道完成处理程序的语法应该是什么?
发布于 2018-02-14 04:06:43
这对我来说很管用:
NSItemProvider* provider = [NSItemProvider new];
[provider registerDataRepresentationForTypeIdentifier:UTI
visibility:NSItemProviderRepresentationVisibilityAll
loadHandler:^NSProgress * _Nullable(void (^ _Nonnull completionHandler)(NSData * _Nullable, NSError * _Nullable)) {
NSProgress* progress = [NSProgress progressWithTotalUnitCount:100];
// do work and call completion handler when done
return progress;
}];https://stackoverflow.com/questions/48463564
复制相似问题