2

Trivial example of a drop target. Running on MacOS. When you drag text content from another app (eg Notes), it is successfully targeted (ie box turns green) but no types are exposed for the actual drop. Resulting log message is:

Item can't load desired type. Types registered:

Is this a sandboxing issue? I am so confused....

import SwiftUI
import UniformTypeIdentifiers

struct DumbDrop: View {
    @State var isDropTarget: Bool = false
    func drop(items: [NSItemProvider]) -> Bool{
        var foundAny = false
        for item in items{
            if item.canLoadObject(ofClass: String.self){
                let _ = item.loadObject(ofClass: String.self){ (text, error) in
                    if let text = text{
                        logger.log("loaded: \(text)")
                    }
                    else if let error = error{
                        logger.log("error during load: \(error.localizedDescription)")
                    }
                }
                foundAny = true
            }
            else{
                logger.log("Item can't load desired type. Types registered: \(item.registeredTypeIdentifiers().joined())")
            }
        }
        return foundAny
    }
    var body: some View {
        Color(isDropTarget ? NSColor.green : NSColor.blue)
            .frame(width: 300, height: 300)
            .onDrop(of: [UTType.text.identifier], isTargeted: $isDropTarget, perform: drop)
    }
}
Rumbles
  • 806
  • 1
  • 8
  • 15
  • It doesn't appear to be a sandboxing problem. It fails when I vend some text on an onDrag modifier within the app. Help! – Rumbles Mar 27 '21 at 20:56

0 Answers0