如何获取要调用的swiftui drop委托

如何获取要调用的swiftui drop委托,swiftui,drag-and-drop,ios14,Swiftui,Drag And Drop,Ios14,我希望你能帮忙。 我正在尝试在iOS 14上的SwiftUI中实现纯文本的拖放。 文本将从浏览器中拖动并放到文本编辑器中。文本被拖动到ok(正常),当文本被拖放时,文本会显示在TextEditor中,但不会调用委托函数 如果你有任何想法或者我可以在哪里找到答案,我将非常感激 我的代码基本上是这样的: import SwiftUI struct ContentView: View { @State private var entityText = ""

我希望你能帮忙。 我正在尝试在iOS 14上的SwiftUI中实现纯文本的拖放。 文本将从浏览器中拖动并放到文本编辑器中。文本被拖动到ok(正常),当文本被拖放时,文本会显示在TextEditor中,但不会调用委托函数

如果你有任何想法或者我可以在哪里找到答案,我将非常感激

我的代码基本上是这样的:

import SwiftUI

struct ContentView: View {
    @State private var entityText = ""
    
    var body: some View {
        VStack(alignment: .leading) {

            TextEditor(text: $entityText)
                .onDrop(of: [.text], delegate: MyDropDelegate())
                .border(Color.black, width: 1)
                .padding( 60.0)
        }
    }
}

struct MyDropDelegate: DropDelegate {
    
    init() {
        print("*** INIT ")
    }
    
    func performDrop(info: DropInfo) -> Bool {
        print("*** Dropped \(info)")
        guard info.hasItemsConforming(to: [.text]) else {
            return false
        }
        return true
    }
    
    func validateDrop(info: DropInfo) -> Bool {
        print("*** Validate")
        return info.hasItemsConforming(to: [.text])
    }
    
    func dropEntered(info: DropInfo) {
        print("*** ENTERED")
    }
}

如中所述,TextEditor可能会发生冲突。但是委托应该设置为self或可观察对象。您正在为需要引用的参数实例化某些内容。

TextEditor可能会自行进行拖放处理,就像它支持自动剪切/复制/粘贴键盘命令一样。如果是这样,你根本不需要onDrop。谢谢你的回复@Adam。是的,它确实做了自己的drop处理,因为变量被填充了,但我真的希望委托事件做点什么。没关系,我已经决定改变我的计划,在没有它的情况下继续工作。总有一天我会弄明白的。谢谢你的时间。谢谢你的回复@Ryan。我无法让它工作,所以我决定改变一下我的设计,不使用代理。我改天再试一次。非常感谢。