想知道为什么当我将WhiteDot拖到SmallDot上时,它为我的UITextField增加了多于1个?它每次运行iPhone模拟器时都有所不同。有时会增加11,2,3,5等等。不明白为什么? 另一个问题,当SmallDot消失时,我也希望它在指定的视图中生成。分数位于右上角。
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)"
}
}
}
答案 0 :(得分:1)
您没有提供太多信息。
当用户用手指平移时,平移手势识别器报告连续的坐标流。当你将一个点拖到另一个点上时,你可能会得到多个“命中”。您需要进行某种测试以确定是否已经吃掉了较小的点。由于您已经将小点上的图像设置为nil,因此您可以检查:
if (WhiteDot.frame.contains(SmallDot.frame) && SmallDot.image != nil) {
SmallDot.image = nil;
AddOne += 1
Score.text = "\(AddOne)"
}
请注意,whiteDot
,smallDot
,addOne
和score
等变量名称应以小写字母开头。类名和类型应以大写字母开头。这是Swift中的一个强大的约定,你应该遵循它。这种语言不会强迫你遵循它,但我不会雇用一个没有这样做的程序员。