2016-04-23 19 views
0

Also wenn ich jemals lange auf einen Knopf drücke, erkennt es das lange Drücken, aber "test" wird zweimal aufgerufen. Wie verhindere ich das?UILongPressGesture wird zweimal aufgerufen

@IBOutlet weak var button2: UIButton! 

func longPressMe(){ 
    print("test") 
} 

func longPressGes(){ 
    let longpress = UILongPressGestureRecognizer(target: self, action: "longPressMe") 
    longpress.minimumPressDuration = 1 
    button2.addGestureRecognizer(longpress) 
} 


override func viewDidLoad() { 
    super.viewDidLoad() 
    longPressGes() 
} 

Antwort

-1

Haben Sie einen Versuch, hier ist, wie #selector zu verwenden:

func longPressMe(recognizer: UILongPressGestureRecognizer) { 
    // do stuff here 
} 

func longPressGes(){ 
    let longpress = UILongPressGestureRecognizer(target: self, action: #selector(yourViewController.longPressMe(_:))) 
    longpress.minimumPressDuration = 1 
    button2.addGestureRecognizer(longpress) 
} 
+0

thanks a ton. ich schätze es. Ich konnte es eine Weile nicht bekommen. –

+0

Diese Antwort adressiert nicht das Problem, wie in der Frage angegeben ... –

2

Sie müssen den Status der Gestenerkennung überprüfen. Ändern longPressMe() etwas wie folgt aus:

func longPressMe(recognizer: UILongPressGestureRecognizer) { 
    guard recognizer.state == .Began else { return } 

    // do stuff here 
} 
+0

mit bot dem Weg und dem Weg i immer halten *** Beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: '- [testtest.ViewController pressAction]: nicht erkannter Selektor an Instanz –

+0

gesendet Sie können keine Zeichenfolge mehr für einen Selektor verwenden. Verwenden Sie stattdessen die neue Syntax '# selector'. –

+0

@DAMONGONZALEZ Wechsler zu '#selector (longPressMe (_ :))' oder wenn es eine alte Version von Xcode/Swift ist, benutze 'action:" longPressMe: "' –

Verwandte Themen