Предполагая, что пользователь должен отсоединить карту, выбрав ее снова, я бы предложил добавить свойство в ваш viewController, чтобы отслеживать selectedCard
.Если выбранная карта уже есть, игнорируйте все остальные.
var selectedCard: UIImageView?
@objc func handleTap(_ recognizer: UITapGestureRecognizer) {
guard let imageView = recognizer.view as? UIImageView else { return }
if let selected = selectedCard {
if selected === imageView {
// unflip the card
imageView.image = backOfCard
selectedCard = nil
}
} else {
// display face of card
imageView.image = ...
selectedCard = imageView
}
}
Примечание: Даже если пользователь одновременно нажимает на две карты, handleTap
будет вызван дважды подряд,Первая карта выиграет, перевернется и станет selectedCard
, а вторая будет проигнорирована, потому что тест if selected === imageView
не пройден.