Я новичок в быстрой и создаю игру с tic tac toe, у меня есть большая часть функциональности, работающей в данный момент, но не смогли разобраться, как остановить квадрат от прикосновения более одного раза. Следующий код - это то, как я до сих пор понял штрихи.Остановить UIImageView от касания более одного раза
ответ
Обычно с iOS вы позволяете им выполнять работу за вас. В вашем случае я бы использовал класс UIButton
и применил к ним действия tap-actions.
Итак, просто откройте свою раскадровку и замените объекты UIImageView
объектами UIButton
. Затем установите изображение на все, с чего вы начинаете (с вашего кода, я думаю, это что-то вроде Picture1.png
) справа от поля, отмеченного на снимке экрана.
Повторите эти действия для всех девяти кнопок TicTacToe.
Ctrl-Track с первой кнопки в ваш вид управления и установки действия. Окно действий должен выглядеть следующим образом:
Это должно добавить функцию к вашему управления классом представления, как:
@IBAction func button(_ sender: UIButton) {
// All your game response goes here
}
где sender
находится кнопка, которая на самом деле нажата.
Теперь ctrl-track все остальные кнопки на этой же функции. Затем вызывается функция, независимо от того, какая кнопка была нажата. Используйте sender
, чтобы установить правильное изображение правой кнопкой.
Теперь вы можете заполнить эту функцию всем своим кодом. Я хотел бы, кроме некоторого представления статуса игры - например. массив 2dim, который удерживает пользователя, который нажал это поле, и может быть использован для проверки, если один пользователь действительно выиграл.
Спасибо за ваш ответ @jboi, но мне сказали, что для этого проекта мне нужно использовать UIImageView's – harryb94
. В этом случае вы можете использовать любой из двух способов: (1), который когда-либо придерживался ImageViews, возможно, не все должны решить должным образом. Давайте узнаем и обсудим (это будет мой путь, но я стар и сильно переживаю в этом пути). И (2) способ использовать один промежуточный шаг в раскадровке: добавить «TapRecognizer» в каждый ImageView и ctrl -отслеживать действие от них к вашей функции в контроллере представления. Остальное остается неизменным. – jboi
Что делать, если вы просто добавили флаг?
var isTouched = false
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let Touch = event?.allTouches!.first!
if topleft.frame.contains((Touch?.location(in: self.view))!) && !self.isTouched{
self.isTouched = true
if currentPlayer == 1 {
topleft.image = #imageLiteral(resourceName: "Picture2.png")
currentPlayer = 2
playerturn.text = "Player 2, it's your turn!"
playerturn.textAlignment = .center
}
else {
topleft.image = #imageLiteral(resourceName: "Picture3.png")
currentPlayer = 1
playerturn.text = "Player 1, it's your turn!"
playerturn.textAlignment = .center
}
}
Я просто пробовал это, и он не работал ни с Федерико. Я все еще мог нажимать на верхний левый квадрат несколько раз. – harryb94
- 1. Остановить анимацию от игры более одного раза
- 2. UIimageview, показывающий более одного раза в uitableviewcell
- 3. Остановить форму, поданную более одного раза
- 4. Остановить размещение пользователей более одного раза
- 5. Как остановить процесс, выполняющийся более одного раза
- 6. Как остановить функцию jQuery .load() от стрельбы более одного раза?
- 7. Как остановить socket.io испускать от срабатывания более одного раза
- 8. Как остановить пользователя от нажатия кнопки более одного раза
- 9. Предотвращение краски от вызова более одного раза
- 10. Уровень UIImageView не будет меняться более одного раза
- 11. mysql_real_escape более одного раза
- 12. ВСТУПЛЕНИЕ более одного раза?
- 13. Остановить пользователей, вступающих в мои конкурсы более одного раза
- 14. Предотвращение запуска команд управления более одного раза
- 15. Как остановить функцию для выполнения более одного раза в JavaScript?
- 16. Есть ли способ начать и остановить SwingWorker более одного раза ..?
- 17. Содержание установлено более одного раза
- 18. (Swift) - touchsBegan, вызываемый более одного раза
- 19. Использование stdin более одного раза
- 20. Вызов MPI_Init более одного раза
- 21. Предотвращение прыжка более одного раза
- 22. setString JProgressBar более одного раза
- 23. Объединение коалесценции более одного раза?
- 24. Вызов функции более одного раза
- 25. столкновение обнаружено более одного раза
- 26. Сервлет инициализируется более одного раза?
- 27. Предупреждение, возвращающееся более одного раза
- 28. Заменить предложение более одного раза
- 29. chrome.tabs.onUpdated.addListener стрельба более одного раза
- 30. NSNotification срабатывает более одного раза?
Вы можете использовать тег на своем изображении, если это UIImageView. Отметьте его нетронутым, 1 коснулся и проверите против тега. –
Извините, Euguene, не знаете, как я мог бы предотвратить повторное касание UIImageView с помощью тега? – harryb94
, когда вы касаетесь его первым, вы делаете tag = 1, когда вы касаетесь его второй раз, вы проверяете, равен ли тег 1, если вы пропустите это касание. Если я понимаю, что вы делаете правильно, это должно сделать трюк. –