SwiftUI onDrag 在设备上运行时不显示预览图像
Posted
技术标签:
【中文标题】SwiftUI onDrag 在设备上运行时不显示预览图像【英文标题】:SwiftUI onDrag does not show preview image when running on device 【发布时间】:2020-06-26 17:32:15 【问题描述】:我注意到自 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
【问题讨论】:
【参考方案1】:虽然 iOS 15 在我的测试中没有修复这个错误,但有一个新的 API 允许您指定预览 View
以显示:onDrag(_:preview:)。您可以重新创建被拖动的视图,在本例中为您的 Image
,用于预览。
【讨论】:
以上是关于SwiftUI onDrag 在设备上运行时不显示预览图像的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI |使用 onDrag 和 onDrop 在一个 LazyGrid 中重新排序项目?
SwiftUI onDrag。如何提供多个 NSItemProviders?
NSLog 在 iphone 模拟器上运行时输出到控制台,但在设备上运行时不输出