UITextField添加多于1,随机产生
问题描述:
想知道为什么当我将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)"
}
}
}
答
您没有提供太多的信息。
平移手势识别器在用户用手指平移时报告连续的坐标流。当您将一个点拖到另一个点时,您可能会获得多个“点击”。您需要进行某种测试以查看小点是否已被吃掉。既然你已经设置上的小圆点为零的图像,你可以检查:
if (WhiteDot.frame.contains(SmallDot.frame) && SmallDot.image != nil) {
SmallDot.image = nil;
AddOne += 1
Score.text = "\(AddOne)"
}
注意,像变量名whiteDot
,smallDot
,addOne
和score
应该以小写字母开头。类名称和类型应该以大写字母开头。这是Swift中的一个强大惯例,你应该遵循它。该语言不会强迫你遵循它,但我不会雇用没有的程序员。
在Duncan的回答中展开,你应该尝试使用手势的'state'属性('UIGestureRecognizerState')。 – n00bProgrammer