Ich bin neu zu schnell und bin ein Tic Tac Toe Spiel erstellen, habe ich die meisten Funktionen arbeiten im Moment, aber nicht in der Lage zu erarbeiten, wie man ein Quadrat zu stoppen von mehr als einmal berührt werden. Der folgende Code ist, wie ich die Berührungen bisher erkannt habe.Stop UIImageView von mehr als einmal berührt werden
Antwort
Normalerweise mit iOS lassen Sie sie die Arbeit für Sie erledigen. In Ihrem Fall würde ich die UIButton
Klasse verwenden und Tap-Aktionen auf sie setzen.
Öffnen Sie einfach Ihr Storyboard und ersetzen Sie Ihre UIImageView
Objekte durch UIButton
Objekte. Dann setze das Bild auf das, womit du beginnst (in deinem Code, ich denke es ist etwa Picture1.png
) auf der rechten Seite in dem Feld, das auf dem Screenshot markiert ist.
Wiederholen Sie für alle neun TicTacToe Tasten.
Ctrl-Track von der ersten Schaltfläche in Ihre Kontrollansicht und legen Sie die Aktion. Das Aktionsfenster sollte wie folgt aussehen:
Dies sollte eine Funktion, um Ihre Steueransichtsklasse, wie:
@IBAction func button(_ sender: UIButton) {
// All your game response goes here
}
wo sender
die Schaltfläche ist, dass tatsächlich gedrückt wurde.
Jetzt Strg-track alle anderen Tasten auf diese gleiche Funktion. Die Funktion wird dann aufgerufen, unabhängig davon, welche Taste gedrückt wurde. Verwenden Sie sender
, um das rechte Bild auf der rechten Schaltfläche festzulegen.
Sie können jetzt die Funktion mit Ihrem gesamten Code füllen. Ich würde einige Darstellungen des Spielstatus - z. ein 2dim-Array - das hält, welcher Benutzer auf welches Feld geklickt hat und kann verwendet werden, um zu überprüfen, ob ein Benutzer gewonnen hat.
Danke für deine Antwort @jboi, aber mir wurde gesagt, dass ich für dieses Projekt UIImageView's – harryb94
verwenden muss. In diesem Fall kannst du einen von zwei Wegen gehen: (1) wer immer auf ImageViews klebt, hat vielleicht nicht alle Innenseiten zu entscheiden richtig. Lassen Sie uns herausfinden und diskutieren (das wäre meine Art, aber ich bin alt und schwer erfahren auf diese Weise) Und (2) ist, einen Zwischenschritt auf Storyboard zu verwenden: Fügen Sie jedem ImageView und Ctrl einen 'TapRecognizer' hinzu Verfolgen Sie die Aktion von ihnen zu Ihrer Funktion im View-Controller. Der Rest bleibt gleich. – jboi
Was ist, wenn Sie einfach eine Flagge hinzufügen?
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
}
}
Ich habe es gerade versucht und es hat auch Federico nicht funktioniert. Ich konnte immer noch mehrmals auf das Quadrat oben links klicken. – harryb94
- 1. Stop Animation von mehr als einmal spielen
- 2. berührt Ereignishandler für UIImageView
- 3. Android - bindService mehr als einmal
- 4. ‚VisualTree‘ wird mehr als einmal
- 5. Verwendung .append mehr als einmal?
- 6. Kann ein Array mehr als einmal in PHP gepostet werden?
- 7. S3-Ereignisbenachrichtigungen werden mehr als einmal pro Datei gesendet
- 8. JSP-Tag-Attribut kann nicht mehr als einmal gesetzt werden?
- 9. Tensorflow-Eingabepipeline: Beispiele werden mehr als einmal gelesen
- 10. Coldfusion „Routinen können nicht mehr deklariert werden als einmal“
- 11. Werden Webpack-Loader-Tests mehr als einmal ausgeführt?
- 12. SQL: Filtern Sie Einträge, die mehr als einmal angezeigt werden
- 13. Objekt 'respStream' kann in Verfahren mehr als einmal entsorgt werden
- 14. Option '--opt' kann nicht mehr als einmal angegeben werden
- 15. Kann PHPs ob_start mehr als einmal aufgerufen werden?
- 16. Automation Event Handler werden mehr als einmal ausgelöst
- 17. Stop Alpha Blending auf UIImageView Animation
- 18. stop performseguewithidentifier einmal ausgeführt
- 19. stop tcl procedure ablaufen mehr als einmal alle 2 Minuten, egal wie oft es heißt
- 20. Aggregation mehrerer Zeilen mehr als einmal
- 21. Drools: Regeln ausgeführt mehr als einmal
- 22. Modell mehr als einmal instanziiert anzeigen. (PRISM)
- 23. Android Volley-Antwort mehr als einmal erhalten
- 24. nullPointerException mit AudioSystem.getAudioInputStream mehr als einmal
- 25. Verwenden, wenn Ergebnis mehr als einmal
- 26. CURSOR nicht Looping mehr als einmal
- 27. ist die Verwendung von "von" mehr als einmal gleichzusetzen?
- 28. Prevent The Same Fragment Mehr von Stapeln als einmal (addToBackStack)
- 29. Array Werte, die mehr als einmal
- 30. MySQL LEFT JOIN mehr als einmal
Sie können Tag auf Ihrem Bild verwenden, wenn es ein UIImageView ist. Markieren Sie es 0 unberührt, 1 berührt, und überprüfen Sie gegen das Tag. –
Sorry Euguene, nicht sicher, wie ich verhindern würde, dass UIImageView mit einem Tag wieder berührt wird? – harryb94
Wenn Sie es zuerst berühren, machen Sie Tag = 1, wenn Sie es zum zweiten Mal berühren, überprüfen Sie, ob Tag 1 ist, wenn Sie diese Berührung überspringen. Wenn ich verstehe, was Sie richtig machen, sollte dies den Trick machen. –