2017-07-16 98 views
0

想知道爲什麼當我將WhiteDot拖到SmallDot上時,它會向我的UITextField添加多於1個?它每次運行iPhone模擬器都有所不同。有時會增加11,2,3,5等等。不知道爲什麼? 另一個問題是,當SmallDot消失時,我也希望它在指定的視圖中產卵。分數在右上角。UITextField添加多於1,隨機產生

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

在Duncan的回答中展開,你應該嘗試使用手勢的'state'屬性('UIGestureRecognizerState')。 – n00bProgrammer

回答

1

您沒有提供太多的信息。

平移手勢識別器在用戶用手指平移時報告連續的座標流。當您將一個點拖到另一個點時,您可能會獲得多個「點擊」。您需要進行某種測試以查看小點是否已被吃掉。既然你已經設置上的小圓點爲零的圖像,你可以檢查:

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

注意,像變量名whiteDotsmallDotaddOnescore應該以小寫字母開頭。類名稱和類型應該以大寫字母開頭。這是Swift中的一個強大慣例,你應該遵循它。該語言不會強迫你遵循它,但我不會僱用沒有的程序員。