Я очень новичок в iOS и пишу игру для iOS, которая требует перемещения данных между двумя UICollectionViews с помощью перетаскивания.Это работает в настоящее время, но есть две проблемы, которые я не знаю, как решить:
Мне нужно удерживать ячейку в течение секунды или две, чтобы сделать ее перетаскиваемой.Я хотел бы, чтобы это было перетаскиваемым на ощупь, но добавление жеста в UICollectionViews не достигло этого.В приведенном ниже коде touchDrag - это UILongPressGestureRecognizer
, добавляемое к UIViewController
через раскадровку.
У меня нет способа сделать некоторые ячейки не стираемыми.Некоторые клетки должны стать не стираемыми после того, как ход в игре пройден (или если клетка пуста, потому что она еще не использовалась).При чтении в Интернете мне может понадобиться реализовать метод canMoveItemAt, но, независимо от того, где я размещаю этот метод, он, похоже, не имеет никакого эффекта.Это потому, что я неправильно установил dragDelegate?
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var collectionView2: UICollectionView!
@IBOutlet weak var playerNameLabel: UILabel!
@IBOutlet weak var playerScoreLabel: UILabel!
@IBOutlet weak var oppNameLabel: UILabel!
@IBOutlet weak var oppScoreLabel: UILabel!
@IBOutlet weak var wordPlayLabel: UILabel!
@IBOutlet weak var endGameLabel: UILabel!
@IBOutlet weak var playButton: UIButton!
@IBOutlet var touchDrag: UILongPressGestureRecognizer!
override func viewDidLoad() {
super.viewDidLoad()
//Setting drag and drop delegates and labels for names (think is isn't correct though.)
playerNameLabel.text = "\(game.playerName):"
oppNameLabel.text = "\(game.opponentName):"
self.collectionView.dragInteractionEnabled = true
self.collectionView.dragDelegate = self
self.collectionView.dropDelegate = self
self.collectionView2.dragInteractionEnabled = true
self.collectionView2.dragDelegate = self
self.collectionView2.dropDelegate = self
self.collectionView2.reorderingCadence = .fast
//Tried to add this gesture to make it so you don't have to hold to drag but it doesn't work.
touchDrag.minimumPressDuration = 0.0
collectionView.addGestureRecognizer(touchDrag)
collectionView2.addGestureRecognizer(touchDrag)
//play button is disabled by default. Only enabled when a valid word is placed.
playButton.isEnabled = false
dataSource2 = game.playerDataSource2
}