我注意到自iOS 13.4起,SwiftUI中的拖放功能存在问题。带有.onDrag和.onDrop修饰符的拖放操作在模拟器中可以正常工作,但是在实际设备(iPhone和iPad)上,您只能看到透明的矩形,而不是在拖动视图时看到视图。
有人在拖动视图时有解决方案来获取正确的预览图像吗?
struct MainView: View {
@State var isDropTarget = false
var body: some View {
VStack{
Image(systemName: "doc.text")
.font(.system(size: 40))
.frame(width: 150, height: 150)
.onDrag { return NSItemProvider(object: "TestString" as NSString) }
Color.orange
.opacity(isDropTarget ? 0.5 : 1)
.onDrop(of: ["public.text"], isTargeted: $isDropTarget) { items in
for item in items {
if item.canLoadObject(ofClass: NSString.self) {
item.loadObject(ofClass: String.self) { str, _ in
print(str ?? "nil")
}
}
}
return true
}
}
}
答案 0 :(得分:0)
虽然 iOS 15 在我的测试中没有修复这个错误,但有一个新的 API 允许您指定要显示的预览 View
:onDrag(_:preview:)。您可以重新创建被拖动的视图,在本例中是您的 Image
,用于预览。