2016-08-01 42 views
0

Wenn ich meine View-Controller öffnen habe ich 4 Geste Erkenner, wenn ich zweimal diesen Ruf tippen passieren: (. Ich drückte nur einmal)swift: Wenn ich den View-Controller öffne und zum ersten Mal den Gestenerkenner drücke, sagt er, dass ich ihn zweimal gedrückt habe. Wie behebt man das?

@IBOutlet var doubleTap: UITapGestureRecognizer! 
@IBAction func doubleTapAction(sender: AnyObject) { 
    doubleTap.numberOfTapsRequired = 2 
    print("Button was 2x") 
} 

aber wenn ich eine der vier Tasten zum ersten Mal drücken es druckt, dass ich zweimal klopfte. nach dem ersten Mal funktioniert es gut.

Kann mir jemand sagen, wie ich das beheben kann?

danke für das Lesen meiner Frage Ich hoffe, jemand kann mir helfen.

Wenn Sie meine Frage nicht verstehen, bitte kommentieren.

Antwort

1

Dies liegt daran, dass der Gestenerkenner zum ersten Mal so eingestellt ist, dass er ein einzelnes Tippen erkennt. Sie das ändern zwei Hähne zu sein, aber Sie es an der falschen Stelle gesetzt, weil Sie schon einmal angezapft, so tritt er die Aktion und ausgeführt, um den Code dort:

self.doubleTap.numberOfTapsRequired = 2 // This is wrong here! 
print("Button was 2x") 

So ist es die Erkennungs ändert zwei Hähnen zu erkennen , aber es hat bereits eins erkannt (deshalb wird dieser Code ausgeführt), so dass auch dieser Text gedruckt wird.

Es macht keinen Sinn, dass Sie jedes Mal, wenn Sie tippen, festlegen, dass Sie es nur einmal tun müssen. Ein guter Ort, um dies zu tun ist viewDidLoad.

Sie können die Anzahl der erforderlichen Taps auch im Interface Builder festlegen.

Codebeispiel:

@IBOutlet var doubleTap: UITapGestureRecognizer! 
@IBAction func doubleTapAction(sender: AnyObject) { 
    print("doubleTap was 2x") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.doubleTap.numberOfTapsRequired = 2 
} 
+0

können Sie mehr plz erklären. wenn ich keine ibaction im viewdidload machen kann und ich 4 Gestenerkenner habe. – EPKgames

+0

Was meinst du? Ich habe dir schon die Antwort auf dein Problem gegeben. –

+0

Ich tat, was du gesagt hast, fügte ich hinzu. und ich habe versucht, es in den Viewdidload zu setzen, aber es funktioniert nicht? also vielleicht habe ich etwas rong ... – EPKgames