如何解决移动 - 不复制 - 快速拖放图像“拖放交互”
我正在尝试使用 Xcode,swift 在我的应用程序中实现拖放功能
快速回顾:这是一款建造火箭的游戏,用户可以将火箭的部件拖动到正确的位置,火箭的部件和每个火箭的位置都是图像。
我有两个问题,第一个问题是当我将图像拖动到其位置时,它被复制而不是移动。我希望图像完全移动到该位置。
第二个问题是当图片移动到该位置时,我希望用户能够再次将零件返回到零件侧。
这是拖动部分:
func dragInteraction(_ interaction: UIDragInteraction,itemsForBeginning session: UIDragSession) -> [UIDragItem] {
if let imageView = interaction.view as? UIImageView{
guard let image = imageView.image else {return []}
let provider = NSItemProvider(object: image)
let item = UIDragItem.init(itemProvider: provider)
return[item]
}
return []
}
这里是放置部分:
func dropInteraction(_ interaction: UIDropInteraction,sessionDidUpdate session: UIDropSession) -> UIDropProposal {
let location = session.location(in: self.view)
let dropOperation: UIDropOperation?
if session.canLoadobjects(ofClass: UIImage.self) {
if rocketLocation0.frame.contains(location) {
dropOperation = .copy
selectedFinger = 0
} else if rocketLocation1.frame.contains(location) {
dropOperation = .copy
selectedFinger = 1
} else if rocketLocation2.frame.contains(location) {
dropOperation = .copy
selectedFinger = 2
} else if rocketLocation3.frame.contains(location) {
dropOperation = .copy
selectedFinger = 3
} else if rocketLocation4.frame.contains(location) {
dropOperation = .copy
selectedFinger = 4
} else if rocketLocation5.frame.contains(location) {
dropOperation = .copy
selectedFinger = 5
} else if rocketLocation6.frame.contains(location) {
dropOperation = .copy
selectedFinger = 6
} else if rocketLocation7.frame.contains(location) {
dropOperation = .copy
selectedFinger = 7
} else if rocketLocation8.frame.contains(location) {
dropOperation = .copy
selectedFinger = 8
} else {
dropOperation = .cancel
selectedFinger = -1
}
} else {
dropOperation = .cancel
selectedFinger = -1
}
return UIDropProposal(operation: dropOperation!)
}
func dropInteraction(_ interaction: UIDropInteraction,performDrop session: UIDropSession) {
if session.canLoadobjects(ofClass: UIImage.self) {
session.loadobjects(ofClass: UIImage.self) { (items) in
if let images = items as? [UIImage] {
switch self.selectedFinger{
case 0 :
self.rocketLocation0.image = images.last
break
case 1 :
self.rocketLocation1.image = images.last
break
case 2 :
self.rocketLocation2.image = images.last
break
case 3 :
self.rocketLocation3.image = images.last
break
case 4 :
self.rocketLocation4.image = images.last
break
case 5 :
self.rocketLocation5.image = images.last
break
case 6 :
self.rocketLocation6.image = images.last
break
case 7 :
self.rocketLocation7.image = images.last
break
case 8 :
self.rocketLocation8.image = images.last
break
default:
print("exit")
}
}
}
}
}
-------------------- 更新--------------------
我在类的顶部初始化了这个变量:
var draggedImage : UIImageView!
然后,我将这一行添加到了dragInteraction 函数中:
draggedImage = imageView
case 0 :
self.rocketLocation0.image = images.last
//added self.draggedImage.image = nil
break
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。