NSItemProvider在SwiftUI拖放中加载对象
我使用SwiftUI中的DropDelegate拖放视图。我正在使用.onDrag视图修改器成功地将数据包装到NSistemProvider中,如果我能够将drop数据作为DropDelegate的存储属性之一,我甚至可以使用.onDrop 我正在尝试使用提供的DropInfo对我的drop数据进行解码。我在NSItemProvider在SwiftUI拖放中加载对象,swift,swiftui,drag-and-drop,ios14,nsitemprovider,Swift,Swiftui,Drag And Drop,Ios14,Nsitemprovider,我使用SwiftUI中的DropDelegate拖放视图。我正在使用.onDrag视图修改器成功地将数据包装到NSistemProvider中,如果我能够将drop数据作为DropDelegate的存储属性之一,我甚至可以使用.onDrop 我正在尝试使用提供的DropInfo对我的drop数据进行解码。我在dropEntered(info:)delegate方法中更新我的视图,以便用户可以在拖放发生之前预览它们。当我写作时 info.itemProviders.first?.loadObjec
dropEntered(info:)
delegate方法中更新我的视图,以便用户可以在拖放发生之前预览它们。当我写作时
info.itemProviders.first?.loadObject(...) { reading, error in
...
}
未调用完成处理程序。如果我改为在performDrop(info:)
delegate方法中编写此闭包,则会调用完成处理程序。为什么只在performDrop(信息:)
中调用完成处理程序?是否有一种方法可以在执行必要的实时更改时进行拖放预览,而不必在dropEntered(信息:)
中更改数据模型
我不喜欢在dropEntered(info:)
中编辑我的数据模型,而且我还不知道如果用户以某种方式取消拖放,它将如何工作。。。也许有一种更好的方法可以让我在performDrop(info:)
中编辑数据模型
谢谢大家! 需要最少的可复制的例子。这很奇怪。我成功地从macOS上输入的DropEnter解码并更新UI(使用loadItem)。您能出示您的NSItemProvider注册/解码和输入正文吗?