是否有其他人收到 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 18.1 解决了这个问题。