我在同一应用程序中将多个imagesView的“拖动”和“粘贴”功能用于多个imageView。由于功能“拖动”允许知道原始的imageView,因此功能“放置”是否可以使“拖动”结束时知道imageView“目标”(坐标?标记?...)。谢谢您的任何建议。
//在这里,itemsForBeginning会话:UIDragSession)允许检索原始的imageView。
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
let touchPoint = session.location(in: self.view)
print("\(touchPoint.x)")
print("\(touchPoint.y)")
//...
guard let image = viewTaped!.image else { return [] }
let item = UIDragItem(itemProvider: NSItemProvider(object: image))
return [item]
}
//但是通过功能“粘贴”,Swift知道了目标,但是我可以以及如何恢复imageView_yyy的信息吗? (坐标?标记?...)。
override func paste(itemProviders: [NSItemProvider]) {
_ = itemProviders.first?.loadObject(ofClass: UIImage.self, completionHandler: { (image: NSItemProviderReading?, error: Error?) in
DispatchQueue.main.async {
self.imageView_yyy.image = image as? UIImage
}
})
}
答案 0 :(得分:0)
您需要保留加载回调。通过将其分配给_
,您就告诉Swift可以立即丢弃的垃圾
// This retains the progress
var pasteProgress: Progress?
override func paste(itemProviders: [NSItemProvider]) {
pasteProgress = itemProviders.first?.loadObject(ofClass: UIImage.self, completionHandler: { (image: NSItemProviderReading?, error: Error?) in
DispatchQueue.main.async {
self.imageView_yyy.image = image as? UIImage
}
})
}