UITextField添加超过1,随机生成

时间:2017-07-16 23:34:37

标签: ios swift cocoa-touch

想知道为什么当我将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)"

    }


        }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

您没有提供太多信息。

当用户用手指平移时,平移手势识别器报告连续的坐标流。当你将一个点拖到另一个点上时,你可能会得到多个“命中”。您需要进行某种测试以确定是否已经吃掉了较小的点。由于您已经将小点上的图像设置为nil,因此您可以检查:

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

请注意,whiteDotsmallDotaddOnescore等变量名称应以小写字母开头。类名和类型应以大写字母开头。这是Swift中的一个强大的约定,你应该遵循它。这种语言不会强迫你遵循它,但我不会雇用一个没有这样做的程序员。