2016-04-23 3 views
0

Итак, когда я долго нажимаю на кнопку, она распознает длительное нажатие, но «тест» вызывается дважды. Как я могу предотвратить это?UILongPressGesture вызывается дважды

@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() 
} 

ответ

-1

У попробовать, вот как использовать #selector:

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

спасибо тонну. я ценю это. не мог получить его на некоторое время. –

+0

Этот ответ даже не затрагивает проблему, как указано в вопросе ... –

2

Вы должны проверить состояние распознавателя жестов. Изменение longPressMe() к чему-то вроде этого:

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

    // do stuff here 
} 
+0

с ботом мой путь и ваш путь я постоянно получаю *** Нагрузочный приложение из-за неперехваченное exception 'NSInvalidArgumentException', reason: '- [testtest.ViewController pressAction]: непризнанный селектор, отправленный экземпляру –

+0

Вы больше не можете использовать строку для селектора. Вместо этого используйте новый синтаксис '# selector'. –

+0

@DAMONGONZALEZ сменит селектор на '#selector (longPressMe (_ :))' или если это старая версия Xcode/Swift, используйте действие: "longPressMe:" ' –

Смежные вопросы