【问题标题】:SwiftUI onDrag does not show preview image when running on deviceSwiftUI onDrag 在设备上运行时不显示预览图像
【发布时间】: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
            }
        }
}

【问题讨论】:

    标签: drag-and-drop swiftui


    【解决方案1】:

    虽然 iOS 15 在我的测试中没有修复这个错误,但有一个新的 API 允许您指定预览 View 以显示:onDrag(_:preview:)。您可以重新创建被拖动的视图,在本例中为您的 Image,用于预览。

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2013-08-21
      • 2018-03-18
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2020-09-22
      • 2017-06-29
      相关资源
      最近更新 更多