2017-07-16 47 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中的一个强大惯例,你应该遵循它。该语言不会强迫你遵循它,但我不会雇用没有的程序员。