0

因此,当我长按一个按钮时,它会识别长按,但“测试”会被调用两次。我该如何防止这种情况发生?

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

2 回答 2

3

您必须检查手势识别器的状态。更改longPressMe()为这样的内容:

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

    // do stuff here
}
于 2016-04-23T10:26:12.450 回答
-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)
}
于 2016-04-23T11:32:40.367 回答