2017-07-16 9 views
0

SmallDotでWhiteDotをドラッグすると、UITextFieldに1を超える値が追加されるのはなぜですか?それは私がiPhoneシミュレータを走らせるたびに変わります。時には11,2,3,5などを追加します。なぜそう思う? もう1つの質問ですが、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

ダンカンの答えを拡張するには、ジェスチャの 'state'プロパティ(' UIGestureRecognizerState')を試してみるべきです。 – n00bProgrammer

答えて

1

あなたは多くの情報を提供していません。

パンジェスチャ認識プログラムは、ユーザーが指でパンすると連続した座標ストリームを報告します。 1つのドットを別のドットにドラッグすると、おそらく複数の「ヒット」が発生します。小さなドットがまだ食べられているかどうかを調べるには、何らかのテストが必要です。あなたは既にゼロに小さなドットの画像を設定しているので、あなたはそれをチェックすることもできますのような変数名はwhiteDotsmallDotaddOne、およびscoreは小文字で始めるべきだと

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

注意を。クラス名と型は大文字で始まる必要があります。これはSwiftの強力なコンベンションで、あなたはそれに従うべきです。言語はあなたがそれに従うよう強制しませんが、私はそうしなかったプログラマーを雇うことはありません。

関連する問題