2016-04-21 15 views
1

Ich möchte Longpressgesture implementieren, wenn meine TouchBegan-Methode dort ist. Ich benutze NSTimer und notiere den Zähler, wenn Zähler 3 wird. Ich habe erkannt, dass lange gedrückt wird. Aber wenn ich die Taste loslasse und dann noch einmal drücke, hält mein Zähler den vorherigen Wert und erhöht den vorherigen Wert. Obwohl ich Zähler gleich Null bin. Bitte helfen Sie jede Hilfe würde approved.Int Wert Persist

var counter : Int = 0 
    var timer :NSTimer? 

override public func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     timer = NSTimer() 
     counter == 0; 
     timer = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: Selector("updateCounter"), userInfo: nil, repeats: true) 

    } 

    func updateCounter() { 
     print(counter++) 
     if (counter > 3){ 
      timer!.invalidate() 
      timer = nil; 
     } 
    } 
override public func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 

     timer!.invalidate() 
      timer = nil; 
     counter == 0; 

    } 
    override public func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 



     if (counter>=3){ 
      print("hello") 

     } 

    } 
+0

Warum haben Sie sich entschieden, 'UILongPressGestureRecognizer' nicht zu verwenden? –

+0

Da lange drücken Gestenauswahl nicht aufgerufen –

Antwort

2

, dass die klassische Gleichung ist == gegen = Operator Verwirrung

timer = NSTimer() // this line is actually not needed 
counter = 0 

... 

timer?.invalidate() // better use question mark to avoid a potential crash 
timer = nil 
counter = 0 

und entfernen Sie alle Semikolons zuweisen.