2017-07-16 3 views
0

Fragen warum, wenn ich den WhiteDot über den SmallDot ziehen fügt es mehr als 1 zu meinem UITextField? Es variiert von jedem Mal, wenn ich den iPhone-Simulator leite. Manchmal fügt es 11, 2, 3, 5 ... usw. hinzu. Keine Ahnung warum? Eine andere Frage, wenn der SmallDot verschwindet, möchte ich auch, dass er in einer bestimmten Ansicht spawnt. Der Punktestand befindet sich in der oberen rechten Ecke.UITextField Hinzufügen von mehr als 1, spawn random

class SecondViewController: UIViewController { 

private var AddOne = 0 

@IBOutlet weak var Score: UITextField! 
} 


@IBAction func handlePan(recognizer:UIPanGestureRecognizer) { 
    let translation = recognizer.translation(in: self.view) 
    if let view = recognizer.view { 
     view.center = CGPoint(x:view.center.x + translation.x, 
           y:view.center.y + translation.y) 
    } 
    recognizer.setTranslation(CGPoint.zero, in: self.view) 

    if (WhiteDot.frame.contains(SmallDot.frame)) { 
     SmallDot.image = nil; 
     AddOne += 1 
     Score.text = "\(AddOne)" 

    } 


     } 
} 

enter image description here

+1

Erweitern Sie auf Duncan's Antwort, sollten Sie versuchen, die 'state' Eigenschaft der Geste (' UIGestureRecognizerState') zu verwenden. – n00bProgrammer

Antwort

1

Sie haben nicht viele Informationen zur Verfügung gestellt.

Ein Pan-Gestenerkenner meldet einen kontinuierlichen Koordinatenstrom, wenn der Benutzer mit dem Finger schwenkt. Sie erhalten wahrscheinlich mehrere "Treffer", wenn Sie einen Punkt über einen anderen ziehen. Sie müssen eine Art Test haben, um zu sehen, ob der kleinere Punkt schon gegessen wurde. Da Sie bereits das Bild auf dem kleinen Punkt auf Null einstellen, könnten Sie das überprüfen:

if (WhiteDot.frame.contains(SmallDot.frame) && SmallDot.image != nil) { 
    SmallDot.image = nil; 
    AddOne += 1 
    Score.text = "\(AddOne)" 
} 

Beachten Sie, dass Variablennamen wie whiteDot, smallDot, addOne und score mit einem Kleinbuchstaben beginnen soll. Klassennamen und Typen sollten mit einem Großbuchstaben beginnen. Dies ist eine starke Konvention in Swift und du solltest ihr folgen. Die Sprache zwingt dich nicht, ihr zu folgen, aber ich würde keinen Programmierer einstellen, der das nicht getan hat.