2016-04-23 44 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

与BOT我的方式和你的方式我不断收到***终止应用程序由于未捕获异常“NSInvalidArgumentException”,原因:' - [testtest.ViewController pressAction]:发送到实例的无法识别的选择器 –

+0

您无法再使用字符串作为选择器。改用新的'#选择器'语法。 –

+0

@DAMONGONZALEZ将选择器更改为'#selector(longPressMe(_ :))',或者如果它是旧版本的Xcode/Swift,请使用'action:“longPressMe:”' –