В настоящее время я создаю потрясающее мобильное приложение типа гонки, в котором игроки будут играть в разные игры в зависимости от их местоположения.Одной из игр, в которую они должны играть, будет типичная игра с перетаскиванием.В настоящее время я могу выполнить перетаскивание для двух текстовых представлений.Однако:
- Я не могу перетащить предыдущий упавший предмет, чтобы вернуть его на исходное место, а также перетащить другие предметы в выброшенное место
- Каждыйу удаленного местоположения может быть только 1 элемент
- Я должен иметь возможность сопоставить содержание перетаскиваемого элемента с отброшенным элементом, чтобы я знал, что это правильный вариант для суммирования баллов
- Как мне масштабировать его для нескольких UITextView, чтобы перетаскивать
Я создал образец для тестирования, с 2 UITextView - 1 для перетаскивания и 1 для перетаскивания.Перетаскивание работает, но я не совсем уверен, как вытащить его после того, как я его уронил.
Со следующим контроллером представления:
class ViewController: UIViewController, UIDragInteractionDelegate, UIDropInteractionDelegate{
@IBOutlet weak var dragTextView: UITextView!
@IBOutlet weak var dropTextView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
dragTextView.isUserInteractionEnabled = true
dropTextView.isUserInteractionEnabled = true
dropTextView.layer.borderWidth = 1
dropTextView.layer.borderColor = UIColor.lightGray.cgColor
let dragTextInteraction = UIDragInteraction(delegate: self)
let dropTextInteraction = UIDropInteraction(delegate: self)
dragTextInteraction.isEnabled = true
dragTextView.addInteraction(dragTextInteraction)
dropTextView.addInteraction(dropTextInteraction)
}
func dropInteraction(_ interaction: UIDropInteraction, canHandle session: UIDropSession) -> Bool {
return session.hasItemsConforming(toTypeIdentifiers: [kUTTypePlainText as String])
}
func dropInteraction(_ interaction: UIDropInteraction, sessionDidUpdate session: UIDropSession) -> UIDropProposal {
let location = session.location(in: self.view)
let dropOperation: UIDropOperation?
if session.canLoadObjects(ofClass: String.self) {
if dropTextView.frame.contains(location) {
dropOperation = .copy
} else {
dropOperation = .cancel
}
} else {
dropOperation = .cancel
}
return UIDropProposal(operation: dropOperation!)
}
func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {
if session.canLoadObjects(ofClass: String.self) {
session.loadObjects(ofClass: String.self) { (items) in
let values = items as [String]
self.dropTextView.text = values.last
}
}
}
func dragInteraction(_ interaction: UIDragInteraction, itemsForBeginning session: UIDragSession) -> [UIDragItem] {
if let textView = interaction.view as? UITextView {
let textToDrag = textView.text
let provider = NSItemProvider(object: textToDrag! as NSString)
let item = UIDragItem(itemProvider: provider)
return [item]
}
return []
}
}
Были проблемы из-за этого.Любая помощь будет принята с благодарностью:)