iOS 18 中的 onDrag“滞后”问题

问题描述 投票:0回答:1

是否有其他人收到 Apple 的回复或遇到过在 iOS 18 上发布时 onDrag 滞后的解决方案? 我已经追寻这个问题一周了,以为是我干的,然后我醒来并开始在较旧的 iOS 版本上测试它,问题就消失了。我发生在模拟器和真实手机上。再深入一点,我偶尔会看到有关 0.5 到 1 秒延迟的讨论。

这是重现它的代码示例:

import SwiftUI
import UniformTypeIdentifiers

struct ContentView: View {
    @State private var draggableText: String = "Move this"

    var body: some View {
        VStack(spacing: 80) {
            DraggableItem(content: $draggableText)
            
            DropZone {
                Text("Place Here!")
                    .font(.headline)
                    .foregroundColor(.white)
            }
            .frame(width: 150, height: 150)
            .background(Color.green)
            .cornerRadius(12)
        }
        .padding()
    }
}

struct DraggableItem: View {
    @Binding var content: String

    var body: some View {
        Text(content)
            .frame(width: 120, height: 120)
            .background(Color.red)
            .foregroundColor(.white)
            .cornerRadius(8)
            .onDrag {
                NSItemProvider(object: NSString(string: content))
            }
    }
}

struct DropZone<Content: View>: View {
    var content: () -> Content

    var body: some View {
        ZStack {
            content()
        }
        .onDrop(of: [UTType.text], delegate: DropHandler())
    }
}

struct DropHandler: DropDelegate {
    func performDrop(info: DropInfo) -> Bool {
        // Add logic to handle the drop
        print("Item dropped!")
        return true
    }
}

#Preview {
    ContentView()
}
ios iphone swiftui
1个回答
0
投票

事实证明,iOS 18.1 解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.